Package com.l2jfrozen.gameserver.datatables

Source Code of com.l2jfrozen.gameserver.datatables.BookmarkTable$SingletonHolder

/*
* 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.l2jfrozen.gameserver.datatables;



import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import com.l2jfrozen.gameserver.model.L2Bookmark;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.util.database.L2DatabaseFactory;

import javolution.util.FastList;


public class BookmarkTable
{
  private static Logger _log = Logger.getLogger(BookmarkTable.class.getName());
 
  private final List<L2Bookmark> _bks;
 
  public static BookmarkTable getInstance()
  {
    return SingletonHolder._instance;
  }
 
  protected BookmarkTable()
  {
    _bks = new FastList<L2Bookmark>();
   
    java.sql.Connection con = null;
    try
    {
      con = L2DatabaseFactory.getInstance().getConnection(false);
      PreparedStatement statement = con.prepareStatement("SELECT * FROM bookmarks");
      ResultSet result = statement.executeQuery();
     
      while (result.next())
      {
        String name = result.getString("name");
       
        _bks.add(new L2Bookmark(name, result.getInt("obj_Id"), result.getInt("x"), result.getInt("y"), result.getInt("z")));
      }
      result.close();
      statement.close();
    }
    catch (Exception e)
    {
      _log.log(Level.SEVERE, "BookmarkTable: Error restoring BookmarkTable: ", e);
    }
    _log.info("BookmarkTable: Restored " + _bks.size() + " bookmarks.");
  }
 
  /**
   * Verify if that location exists for that particular id.
   * @param name The location name.
   * @param objId The player Id to make checks on.
   * @return true if the location exists, false otherwise.
   */
  public boolean isExisting(String name, int objId)
  {
    return getBookmark(name, objId) != null;
  }
 
  /**
   * Retrieve a bookmark by its name and its specific player.
   * @param name The location name.
   * @param objId The player Id to make checks on.
   * @return null if such bookmark doesn't exist, the L2Bookmark otherwise.
   */
  public L2Bookmark getBookmark(String name, int objId)
  {
    for (L2Bookmark bk : _bks)
    {
      if (bk.getName().equalsIgnoreCase(name) && bk.getId() == objId)
        return bk;
    }
    return null;
  }
 
  /**
   * Retrieve the list of bookmarks of one player.
   * @param objId The player Id to make checks on.
   * @return an array of L2Bookmark.
   */
  public L2Bookmark[] getBookmarks(int objId)
  {
    List<L2Bookmark> _temp = new ArrayList<L2Bookmark>();
    for (L2Bookmark bk : _bks)
    {
      if (bk.getId() == objId)
        _temp.add(bk);
    }
    return (_temp.isEmpty()) ? null : _temp.toArray(new L2Bookmark[_temp.size()]);
  }
 
  /**
   * Creates a new bookmark and store info to database
   * @param name The name of the bookmark.
   * @param player The player who requested the clan creation.
   */
  public void saveBookmark(String name, L2PcInstance player)
  {
    final int objId = player.getObjectId();
    final int x = player.getX();
    final int y = player.getY();
    final int z = player.getZ();
   
    _bks.add(new L2Bookmark(name, objId, x, y, z));
   
      java.sql.Connection con = null;
      try
      {
        con = L2DatabaseFactory.getInstance().getConnection(false);
      PreparedStatement statement = con.prepareStatement("INSERT INTO bookmarks (name, obj_Id, x, y, z) values (?,?,?,?,?)");
      statement.setString(1, name);
      statement.setInt(2, objId);
      statement.setInt(3, x);
      statement.setInt(4, y);
      statement.setInt(5, z);
      statement.execute();
      statement.close();
    }
    catch (Exception e)
    {
      _log.log(Level.SEVERE, "Error adding bookmark on DB.", e);
    }
  }
 
  /**
   * Delete a bookmark, based on the playerId and its name.
   * @param name The name of the bookmark.
   * @param objId The player Id to make checks on.
   */
  public void deleteBookmark(String name, int objId)
  {
    final L2Bookmark bookmark = getBookmark(name, objId);
    if (bookmark != null)
    {
      _bks.remove(bookmark);
     
      java.sql.Connection con = null;
      try
      {
        con = L2DatabaseFactory.getInstance().getConnection(false);
        PreparedStatement statement = con.prepareStatement("DELETE FROM bookmarks WHERE name=? AND obj_Id=?");
        statement.setString(1, name);
        statement.setInt(2, objId);
        statement.execute();
        statement.close();
      }
      catch (Exception e)
      {
        _log.log(Level.SEVERE, "Error removing bookmark from DB.", e);
      }
    }
  }
 
  private static class SingletonHolder
  {
    protected static final BookmarkTable _instance = new BookmarkTable();
  }
}
TOP

Related Classes of com.l2jfrozen.gameserver.datatables.BookmarkTable$SingletonHolder

TOP
Copyright © 2018 www.massapi.com. 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.