package pl.shockah.shocky.sql;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.Map;
import org.json.JSONObject;
import org.pircbotx.Channel;
import org.pircbotx.PircBotX;
import org.pircbotx.User;
import pl.shockah.shocky.interfaces.IFactoidRegistry;
public final class Factoid {
public static Factoid fromJSONObject(JSONObject j) {
try {
return new Factoid(j.getLong("id"), j.getString("factoid"), j.getString("channel"), j
.getString("author"), j.getString("rawtext"), Long
.parseLong(j.getString("stamp")) * 1000, j
.getString("locked").equals("1"), j.getString("forgotten")
.equals("1"));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static Factoid fromResultSet(ResultSet j) throws SQLException {
if (!j.next())
return null;
return new Factoid(j.getLong("id"), j.getString("factoid"), j.getString("channel"),
j.getString("author"), j.getString("rawtext"),
j.getLong("stamp") * 1000,
j.getBoolean("locked"),
j.getBoolean("forgotten"));
}
public static Factoid[] arrayFromResultSet(ResultSet j) throws SQLException {
LinkedList<Factoid> list = new LinkedList<Factoid>();
Factoid f;
while ((f = fromResultSet(j)) != null)
list.add(f);
return list.toArray(new Factoid[0]);
}
public long id;
public final String name, channel, author, rawtext;
public final long stamp;
public final boolean locked, forgotten;
public Map<String,Object> metadata = null;
public Token[] tokens = null;
public IFactoidRegistry registry = null;
private Factoid(long id, String name, String channel, String author, String rawtext, long stamp) {
this(id, name, channel, author, rawtext, stamp, false, false);
}
private Factoid(long id, String name, String channel, String author, String rawtext, long stamp, boolean locked, boolean forgotten) {
this.id = id;
this.name = name;
this.channel = channel;
this.author = author;
this.rawtext = rawtext;
this.stamp = stamp;
this.locked = locked;
this.forgotten = forgotten;
}
@Override
public String toString() {
return rawtext;
}
public static interface Token {
CharSequence process(PircBotX bot, Channel channel, User sender, String message, String[] args) throws Exception;
}
}