/*
* 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 silentium.gameserver.board.BB;
import java.sql.Connection;
import java.sql.PreparedStatement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import silentium.commons.database.DatabaseFactory;
import silentium.gameserver.board.Manager.TopicBBSManager;
public class Topic
{
private final static Logger _log = LoggerFactory.getLogger(Topic.class.getName());
public static final int MORMAL = 0;
public static final int MEMO = 1;
private final int _id;
private final int _forumId;
private final String _topicName;
private final long _date;
private final String _ownerName;
private final int _ownerId;
private final int _type;
private final int _cReply;
public Topic(ConstructorType ct, int id, int fid, String name, long date, String oname, int oid, int type, int Creply)
{
_id = id;
_forumId = fid;
_topicName = name;
_date = date;
_ownerName = oname;
_ownerId = oid;
_type = type;
_cReply = Creply;
TopicBBSManager.getInstance().addTopic(this);
if (ct == ConstructorType.CREATE)
insertIntoDb();
}
private void insertIntoDb()
{
try (Connection con = DatabaseFactory.getConnection())
{
PreparedStatement statement = con.prepareStatement("INSERT INTO topic (topic_id,topic_forum_id,topic_name,topic_date,topic_ownername,topic_ownerid,topic_type,topic_reply) values (?,?,?,?,?,?,?,?)");
statement.setInt(1, _id);
statement.setInt(2, _forumId);
statement.setString(3, _topicName);
statement.setLong(4, _date);
statement.setString(5, _ownerName);
statement.setInt(6, _ownerId);
statement.setInt(7, _type);
statement.setInt(8, _cReply);
statement.execute();
statement.close();
}
catch (Exception e)
{
_log.warn("Error while saving new Topic to db " + e.getMessage(), e);
}
}
public enum ConstructorType
{
RESTORE, CREATE
}
public int getID()
{
return _id;
}
public int getForumID()
{
return _forumId;
}
public String getName()
{
return _topicName;
}
public String getOwnerName()
{
return _ownerName;
}
public long getDate()
{
return _date;
}
public void deleteMe(Forum f)
{
TopicBBSManager.getInstance().delTopic(this);
f.rmTopicByID(getID());
try (Connection con = DatabaseFactory.getConnection())
{
PreparedStatement statement = con.prepareStatement("DELETE FROM topic WHERE topic_id=? AND topic_forum_id=?");
statement.setInt(1, getID());
statement.setInt(2, f.getID());
statement.execute();
statement.close();
}
catch (Exception e)
{
_log.warn("Error while deleting topic: " + e.getMessage(), e);
}
}
}