Package l2p.database

Examples of l2p.database.ThreadConnection


    }
    else
    { // стекуемые проверяем на коллизии, хотя обрабатывает он корректно и несколько одинаковых но это некрасиво
      FiltredPreparedStatement statement = null;
      ResultSet rs = null;
      ThreadConnection con = null;
      try
      {
        sendLock.lock();
        con = L2DatabaseFactory.getInstance().getConnection();
        statement = con.prepareStatement("SELECT object_id FROM items WHERE owner_id = ? AND item_id = ? AND loc = 'WAREHOUSE' LIMIT 1"); // сперва пробуем найти в базе его вещь на складе
        statement.setInt(1, item.getOwnerId());
        statement.setInt(2, item.getItemId());
        rs = statement.executeQuery();
        if(rs.next())
        {
          int id = rs.getInt("object_id");
          DatabaseUtils.closeStatement(statement);
          statement = con.prepareStatement("UPDATE items SET count=count+? WHERE object_id = ? LIMIT 1"); // если нашли увеличиваем ее количество
          statement.setLong(1, item.getCount());
          statement.setInt(2, id);
          statement.executeUpdate();
        }
        else
View Full Code Here


  /**
   * Вызывается при старте сервера, чистит базу от фигни
   */
  public void cleanupBD()
  {
    ThreadConnection con = null;
    FiltredStatement stmt = null;
    ResultSet rs = null;
    try
    {
      sendLock.lock();
      con = L2DatabaseFactory.getInstance().getConnection();
      // удаляем почту у удаленных чаров
      stmt = con.createStatement();
      stmt.executeUpdate("DELETE mail FROM mail LEFT JOIN characters ON mail.sender = characters.obj_Id WHERE characters.obj_Id IS NULL");
      DatabaseUtils.closeStatement(stmt);
      stmt = con.createStatement();
      stmt.executeUpdate("DELETE mail FROM mail LEFT JOIN characters ON mail.receiver = characters.obj_Id WHERE characters.obj_Id IS NULL");
      DatabaseUtils.closeStatement(stmt);
      // удаляем протухшие письма
      stmt = con.createStatement();
      stmt.executeUpdate("DELETE FROM mail WHERE UNIX_TIMESTAMP(expire) < UNIX_TIMESTAMP()");
      DatabaseUtils.closeStatement(stmt);
      // удаляем некорректные аттачи
      stmt = con.createStatement();
      stmt.executeUpdate("DELETE mail_attachments FROM mail_attachments LEFT JOIN items ON mail_attachments.itemId = items.object_id WHERE items.object_id IS NULL");
      DatabaseUtils.closeStatement(stmt);
      // чистим письма с потерянными аттачами
      stmt = con.createStatement();
      stmt.executeUpdate("UPDATE mail LEFT JOIN mail_attachments ON mail.messageId = mail_attachments.messageId SET price=0,attachments=0 WHERE mail_attachments.messageId IS NULL");
      DatabaseUtils.closeStatement(stmt);
      // чистим от мусора в mail_attachments, возвращая вещи владельцам
      stmt = con.createStatement();
      rs = stmt.executeQuery("SELECT itemId FROM mail_attachments LEFT JOIN mail ON mail.messageId = mail_attachments.messageId WHERE mail.messageId IS NULL");
      while(rs.next())
      {
        L2ItemInstance item = L2ItemInstance.restoreFromDb(rs.getInt("itemId"), false);
        if(item.getOwnerId() == 0)
        {
          item.removeFromDb(true);
        }
        else
        {
          returnItem(item);
        }
      }
      DatabaseUtils.closeDatabaseSR(stmt, rs);
      stmt = con.createStatement();
      stmt.executeUpdate("DELETE mail_attachments FROM mail_attachments LEFT JOIN mail ON mail.messageId = mail_attachments.messageId WHERE mail.messageId IS NULL");
      DatabaseUtils.closeStatement(stmt);
    }
    catch(SQLException e)
    {
View Full Code Here

  private void loadCache()
  {
    lettersByIdCache = new HashMap<Integer, Letter>();
    lettersByReceiverCache = new HashMap<Integer, GArray<Letter>>();
    lettersBySenderCache = new HashMap<Integer, GArray<Letter>>();
    ThreadConnection con = null;
    FiltredStatement stmt = null;
    FiltredStatement stmt2 = null;
    ResultSet rs = null;
    ResultSet rs2 = null;
    sendLock.lock();
    try
    {
      con = L2DatabaseFactory.getInstance().getConnection();
      stmt = con.createStatement();
      rs = stmt.executeQuery("SELECT m.messageId, m.topic, UNIX_TIMESTAMP(m.expire) AS lifetime, m.body, m.price, m.attachments, m.unread, m.system, m.sender, m.receiver, cs.char_name, cr.char_name FROM mail m LEFT JOIN characters cs ON ( m.sender = cs.obj_Id ) LEFT JOIN characters cr ON ( m.receiver = cr.obj_Id )");
      while(rs.next())
      {
        Letter ret = new Letter();
        ret.id = rs.getInt("m.messageId");
        ret.system = rs.getInt("m.system");
        ret.attachments = rs.getInt("m.attachments");
        ret.unread = rs.getInt("m.unread");
        ret.senderId = rs.getInt("m.sender");
        ret.receiverId = rs.getInt("m.receiver");
        ret.validtime = rs.getInt("lifetime");
        ret.senderName = rs.getString("cs.char_name");
        ret.receiverName = rs.getString("cr.char_name");
        ret.topic = rs.getString("m.topic");
        ret.body = rs.getString("m.body");
        ret.price = rs.getLong("m.price");
        if(ret.attachments > 0)
        {
          stmt2 = con.createStatement();
          rs2 = stmt2.executeQuery("SELECT itemId FROM mail_attachments WHERE messageId=" + ret.id);
          GArray<TradeItem> items = new GArray<TradeItem>(ret.attachments);
          while(rs2.next())
          {
            TradeItem ti = TradeItem.restoreFromDb(rs2.getInt("itemId"), ItemLocation.LEASE);
View Full Code Here

    }
  }

  private void setAllCharacterOffline()
  {
    ThreadConnection conn = null;
    FiltredStatement stmt = null;
    try
    {
      conn = L2DatabaseFactory.getInstance().getConnection();
      stmt = conn.createStatement();
      stmt.executeUpdate("UPDATE characters SET online = 0");
      stmt.executeUpdate("UPDATE characters SET accesslevel = 0 WHERE accesslevel = -1");
      _log.info("Clear characters online status and accesslevel.");
    }
    catch(SQLException e)
View Full Code Here

    return Config.MULTI_THREADED_IDFACTORY_EXTRACTOR ? extractUsedObjectIDTable2() : extractUsedObjectIDTable1();
  }

  protected int[] extractUsedObjectIDTable1()
  {
    ThreadConnection con = null;
    FiltredStatement s = null;
    ResultSet rs = null;
    try
    {
      con = L2DatabaseFactory.getInstance().getConnection();
      s = con.createStatement();
      String query = "SELECT " + Tasks.objTables[0][1] + ", 0 AS i FROM " + Tasks.objTables[0][0];
      for(int i = 1; i < Tasks.objTables.length; i++)
      {
        query += " UNION SELECT " + Tasks.objTables[i][1] + ", " + i + " FROM " + Tasks.objTables[i][0];
      }
View Full Code Here

      _objCountPut = objCountPut;
    }

    public void run()
    {
      ThreadConnection con = null;
      FiltredStatement s = null;
      ResultSet rs = null;
      try
      {
        con = L2DatabaseFactory.getInstance().getConnection();
        s = con.createStatement();
        rs = s.executeQuery("SELECT COUNT(*) FROM " + _objTable[0]);
        if(!rs.next())
        {
          throw new Exception("IdFactory: can't extract count ids :: " + _objTable[0]);
        }
View Full Code Here

      startIdx = objCount[1];
    }

    public void run()
    {
      ThreadConnection con = null;
      FiltredStatement s = null;
      ResultSet rs = null;
      try
      {
        con = L2DatabaseFactory.getInstance().getConnection();
        s = con.createStatement();
        rs = s.executeQuery("SELECT " + _objTable[1] + " FROM " + _objTable[0]);
        int idx = 0;
        while(rs.next())
        {
          _resultArray[startIdx + idx++] = rs.getInt(1);
View Full Code Here

  }

  @Override
  public void saveSiegeDate()
  {
    ThreadConnection con = null;
    FiltredPreparedStatement statement = null;
    try
    {
      con = L2DatabaseFactory.getInstance().getConnection();
      statement = con.prepareStatement("UPDATE forts SET siegeDate = ? WHERE id = ?");
      statement.setLong(1, _siege.getSiegeDate().getTimeInMillis() / 1000);
      statement.setInt(2, _siege.getSiegeUnit().getId());
      statement.execute();
      ((Fortress) _siege.getSiegeUnit()).setSiegeDate((int) (_siege.getSiegeDate().getTimeInMillis() / 1000));
    }
View Full Code Here

  }

  @Override
  public void saveLastSiegeDate()
  {
    ThreadConnection con = null;
    FiltredPreparedStatement statement = null;
    try
    {
      con = L2DatabaseFactory.getInstance().getConnection();
      statement = con.prepareStatement("UPDATE forts SET lastSiegeDate = ? WHERE id = ?");
      statement.setLong(1, _siege.getSiegeUnit().getLastSiegeDate());
      statement.setInt(2, _siege.getSiegeUnit().getId());
      statement.execute();
    }
    catch(Exception e)
View Full Code Here

  {
    _SiegeDayOfWeek = 1;
    _SiegeHourOfDay = 12;
    _Siege = null;
    _type = ResidenceType.Clanhall;
    ThreadConnection con = null;
    FiltredPreparedStatement statement = null;
    ResultSet rs = null;
    _paidUntil = Calendar.getInstance();
    try
    {
      con = L2DatabaseFactory.getInstance().getConnection();
      statement = con.prepareStatement("SELECT * FROM clanhall WHERE id = ?");
      statement.setInt(1, getId());
      rs = statement.executeQuery();
      if(rs.next())
      {
        _name = rs.getString("name");
        _ownerId = rs.getInt("ownerId");
        _price = (long) (rs.getLong("price") * Config.RESIDENCE_LEASE_MULTIPLIER);
        _lease = Math.max(_price / 100, rs.getLong("lease"));
        _desc = rs.getString("desc");
        _location = rs.getString("location");
        _paidUntil.setTimeInMillis(rs.getLong("paidUntil"));
        _grade = rs.getInt("Grade");
        _inDebt = rs.getInt("inDebt") == 1;
        _SiegeDayOfWeek = rs.getInt("siegeDayOfWeek");
        _SiegeHourOfDay = rs.getInt("siegeHourOfDay");
        if(_SiegeDayOfWeek > 0)
        {
          getSiege().setSiegeDateTime(rs.getLong("siegeDate") * 1000L);
        }
        StringTokenizer st = new StringTokenizer(rs.getString("skills"), ";");
        while(st.hasMoreTokens())
        {
          L2Skill skill = SkillTable.getInstance().getInfo(Integer.valueOf(st.nextToken()), Integer.valueOf(st.nextToken()));
          if(skill != null)
          {
            _skills.add(skill);
          }
        }
      }
      DatabaseUtils.closeDatabaseSR(statement, rs);
      statement = con.prepareStatement("SELECT clan_id FROM clan_data WHERE hasHideout = ?");
      statement.setInt(1, getId());
      rs = statement.executeQuery();
      if(rs.next())
      {
        _ownerId = rs.getInt("clan_id");
View Full Code Here

TOP

Related Classes of l2p.database.ThreadConnection

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.