Code clean/reformat.
Updated copyright.
This commit is contained in:
parent
d02377a491
commit
0255fa537f
26 changed files with 1298 additions and 1443 deletions
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)Commands.java
|
||||
* Commands.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
/**
|
||||
|
@ -43,6 +42,16 @@ package net.thauvin.erik.mobibot;
|
|||
*/
|
||||
public class Commands
|
||||
{
|
||||
/**
|
||||
* The add (back)log command.
|
||||
*/
|
||||
public static final String ADDLOG_CMD = "addlog";
|
||||
|
||||
/**
|
||||
* The math command.
|
||||
*/
|
||||
public static final String CALC_CMD = "calc";
|
||||
|
||||
/**
|
||||
* The currency command.
|
||||
*/
|
||||
|
@ -54,35 +63,15 @@ public class Commands
|
|||
public static final String CURRENCY_RATES_KEYWORD = "rates";
|
||||
|
||||
/**
|
||||
* The weather command.
|
||||
* The cycle command.
|
||||
*/
|
||||
public static final String WEATHER_CMD = "weather";
|
||||
public static final String CYCLE_CMD = "cycle";
|
||||
|
||||
/**
|
||||
* Debug command line argument.
|
||||
*/
|
||||
public static final String DEBUG_ARG = "debug";
|
||||
|
||||
/**
|
||||
* Help command line argument.
|
||||
*/
|
||||
public static final String HELP_ARG = "help";
|
||||
|
||||
/**
|
||||
* Properties command line argument.
|
||||
*/
|
||||
public static final String PROPS_ARG = "properties";
|
||||
|
||||
/**
|
||||
* Properties version line argument.
|
||||
*/
|
||||
public static final String VERSION_ARG = "version";
|
||||
|
||||
/**
|
||||
* The add (back)log command.
|
||||
*/
|
||||
public static final String ADDLOG_CMD = "addlog";
|
||||
|
||||
/**
|
||||
* The debug command.
|
||||
*/
|
||||
|
@ -93,35 +82,20 @@ public class Commands
|
|||
*/
|
||||
public static final String DICE_CMD = "dice";
|
||||
|
||||
/**
|
||||
* The say command.
|
||||
*/
|
||||
public static final String SAY_CMD = "say";
|
||||
|
||||
/**
|
||||
* The die command.
|
||||
*/
|
||||
public static final String DIE_CMD = "die";
|
||||
|
||||
/**
|
||||
* The cycle command.
|
||||
* The Google command.
|
||||
*/
|
||||
public static final String CYCLE_CMD = "cycle";
|
||||
public static final String GOOGLE_CMD = "google";
|
||||
|
||||
/**
|
||||
* The msg command.
|
||||
* Help command line argument.
|
||||
*/
|
||||
public static final String MSG_CMD = "msg";
|
||||
|
||||
/**
|
||||
* The ignore command.
|
||||
*/
|
||||
public static final String IGNORE_CMD = "ignore";
|
||||
|
||||
/**
|
||||
* The ignore <code>me</code> keyword.
|
||||
*/
|
||||
public static final String IGNORE_ME_KEYWORD = "me";
|
||||
public static final String HELP_ARG = "help";
|
||||
|
||||
/**
|
||||
* The help command.
|
||||
|
@ -139,29 +113,19 @@ public class Commands
|
|||
public static final String HELP_TAGS_KEYWORD = "tags";
|
||||
|
||||
/**
|
||||
* The Google command.
|
||||
* The ignore command.
|
||||
*/
|
||||
public static final String GOOGLE_CMD = "google";
|
||||
public static final String IGNORE_CMD = "ignore";
|
||||
|
||||
/**
|
||||
* The Twitter command.
|
||||
* The ignore <code>me</code> keyword.
|
||||
*/
|
||||
public static final String TWITTER_CMD = "twitter";
|
||||
public static final String IGNORE_ME_KEYWORD = "me";
|
||||
|
||||
/**
|
||||
* The math command.
|
||||
* The info command.
|
||||
*/
|
||||
public static final String CALC_CMD = "calc";
|
||||
|
||||
/**
|
||||
* The me command.
|
||||
*/
|
||||
public static final String ME_CMD = "me";
|
||||
|
||||
/**
|
||||
* The nick command.
|
||||
*/
|
||||
public static final String NICK_CMD = "nick";
|
||||
public static final String INFO_CMD = "info";
|
||||
|
||||
/**
|
||||
* The link command.
|
||||
|
@ -173,6 +137,21 @@ public class Commands
|
|||
*/
|
||||
public static final String LOOKUP_CMD = "lookup";
|
||||
|
||||
/**
|
||||
* The me command.
|
||||
*/
|
||||
public static final String ME_CMD = "me";
|
||||
|
||||
/**
|
||||
* The msg command.
|
||||
*/
|
||||
public static final String MSG_CMD = "msg";
|
||||
|
||||
/**
|
||||
* The nick command.
|
||||
*/
|
||||
public static final String NICK_CMD = "nick";
|
||||
|
||||
/**
|
||||
* The ping command.
|
||||
*/
|
||||
|
@ -183,6 +162,11 @@ public class Commands
|
|||
*/
|
||||
public static final String PONG_CMD = "pong";
|
||||
|
||||
/**
|
||||
* Properties command line argument.
|
||||
*/
|
||||
public static final String PROPS_ARG = "properties";
|
||||
|
||||
/**
|
||||
* The quote command.
|
||||
*/
|
||||
|
@ -193,15 +177,20 @@ public class Commands
|
|||
*/
|
||||
public static final String RECAP_CMD = "recap";
|
||||
|
||||
/**
|
||||
* The say command.
|
||||
*/
|
||||
public static final String SAY_CMD = "say";
|
||||
|
||||
/**
|
||||
* The stock command.
|
||||
*/
|
||||
public static final String STOCK_CMD = "stock";
|
||||
|
||||
/**
|
||||
* The time command.
|
||||
* The {@link #TELL_CMD} all command.
|
||||
*/
|
||||
public static final String TIME_CMD = "time";
|
||||
public static final String TELL_ALL_CMD = "all";
|
||||
|
||||
/**
|
||||
* The tell command.
|
||||
|
@ -214,14 +203,14 @@ public class Commands
|
|||
public static final String TELL_DEL_CMD = "del";
|
||||
|
||||
/**
|
||||
* The {@link #TELL_CMD} all command.
|
||||
* The time command.
|
||||
*/
|
||||
public static final String TELL_ALL_CMD = "all";
|
||||
public static final String TIME_CMD = "time";
|
||||
|
||||
/**
|
||||
* The war command.
|
||||
* The Twitter command.
|
||||
*/
|
||||
public static final String WAR_CMD = "war";
|
||||
public static final String TWITTER_CMD = "twitter";
|
||||
|
||||
/**
|
||||
* The users command.
|
||||
|
@ -229,9 +218,9 @@ public class Commands
|
|||
public static final String USERS_CMD = "users";
|
||||
|
||||
/**
|
||||
* The info command.
|
||||
* Properties version line argument.
|
||||
*/
|
||||
public static final String INFO_CMD = "info";
|
||||
public static final String VERSION_ARG = "version";
|
||||
|
||||
/**
|
||||
* The version command.
|
||||
|
@ -243,10 +232,20 @@ public class Commands
|
|||
*/
|
||||
public static final String VIEW_CMD = "view";
|
||||
|
||||
/**
|
||||
* The war command.
|
||||
*/
|
||||
public static final String WAR_CMD = "war";
|
||||
|
||||
/**
|
||||
* The weather command.
|
||||
*/
|
||||
public static final String WEATHER_CMD = "weather";
|
||||
|
||||
/**
|
||||
* Disables the default constructor.
|
||||
*
|
||||
* @throws UnsupportedOperationException if an error occurred. if the constructor is called.
|
||||
* @throws UnsupportedOperationException If the constructor is called.
|
||||
*/
|
||||
private Commands()
|
||||
throws UnsupportedOperationException
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)CurrencyConverter.java
|
||||
* CurrencyConverter.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import org.jdom.Document;
|
||||
|
@ -54,21 +53,26 @@ import java.util.*;
|
|||
*/
|
||||
public class CurrencyConverter implements Runnable
|
||||
{
|
||||
/**
|
||||
* The exchange rates table URL.
|
||||
*/
|
||||
private static final String EXCHANGE_TABLE_URL = "http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml";
|
||||
|
||||
/**
|
||||
* The exchange rates.
|
||||
*/
|
||||
private static final Map<String, String> EXCHANGE_RATES = new TreeMap<String, String>();
|
||||
|
||||
/**
|
||||
* The exchange rates table URL.
|
||||
*/
|
||||
private static final String EXCHANGE_TABLE_URL = "http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml";
|
||||
|
||||
/**
|
||||
* The bot.
|
||||
*/
|
||||
private final Mobibot bot;
|
||||
|
||||
/**
|
||||
* The last exchange rates table publication date.
|
||||
*/
|
||||
private String pubDate = "";
|
||||
|
||||
/**
|
||||
* The actual currency query.
|
||||
*/
|
||||
|
@ -79,11 +83,6 @@ public class CurrencyConverter implements Runnable
|
|||
*/
|
||||
private String sender;
|
||||
|
||||
/**
|
||||
* The last exchange rates table publication date.
|
||||
*/
|
||||
private String pubDate = "";
|
||||
|
||||
/**
|
||||
* Creates a new {@link CurrencyConverter} instance.
|
||||
*
|
||||
|
@ -165,8 +164,7 @@ public class CurrencyConverter implements Runnable
|
|||
NumberFormat.getCurrencyInstance(Locale.US).format(amt).substring(1) + ' ' +
|
||||
cmds[1].toUpperCase() + " = " +
|
||||
NumberFormat.getCurrencyInstance(Locale.US).format((amt * to) / from)
|
||||
.substring(1) + ' ' + cmds[3].toUpperCase()
|
||||
);
|
||||
.substring(1) + ' ' + cmds[3].toUpperCase());
|
||||
}
|
||||
catch (NullPointerException ignored)
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)DeliciousPoster.java
|
||||
* DeliciousPoster.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import del.icio.us.Delicious;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)Dice.java
|
||||
* Dice.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -47,7 +47,7 @@ public class Dice
|
|||
/**
|
||||
* Disables the default constructor.
|
||||
*
|
||||
* @throws UnsupportedOperationException if an error occurred. if the constructor is called.
|
||||
* @throws UnsupportedOperationException If the constructor is called.
|
||||
*/
|
||||
private Dice()
|
||||
throws UnsupportedOperationException
|
||||
|
@ -71,8 +71,7 @@ public class Dice
|
|||
|
||||
bot.send(bot.getChannel(),
|
||||
sender + " rolled two dice: " + Utils.bold(i) + " and " + Utils.bold(y) + " for a total of " + Utils
|
||||
.bold(playerTotal)
|
||||
);
|
||||
.bold(playerTotal));
|
||||
|
||||
i = r.nextInt(6) + 1;
|
||||
y = r.nextInt(6) + 1;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)EntriesMgr.java
|
||||
* EntriesMgr.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -75,7 +75,7 @@ public class EntriesMgr
|
|||
/**
|
||||
* Disables the default constructor.
|
||||
*
|
||||
* @throws UnsupportedOperationException if an error occurred. if the constructor is called.
|
||||
* @throws UnsupportedOperationException If the constructor is called.
|
||||
*/
|
||||
private EntriesMgr()
|
||||
throws UnsupportedOperationException
|
||||
|
@ -83,6 +83,55 @@ public class EntriesMgr
|
|||
throw new UnsupportedOperationException("Illegal constructor call.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the backlogs.
|
||||
*
|
||||
* @param file The file containing the backlogs.
|
||||
* @param history The history list.
|
||||
*
|
||||
* @throws FileNotFoundException If the file was not found.
|
||||
* @throws FeedException If an error occurred while reading the feed.
|
||||
*/
|
||||
public static void loadBacklogs(String file, List<String> history)
|
||||
throws FileNotFoundException, FeedException
|
||||
{
|
||||
history.clear();
|
||||
|
||||
final SyndFeedInput input = new SyndFeedInput();
|
||||
|
||||
InputStreamReader reader = null;
|
||||
|
||||
try
|
||||
{
|
||||
reader = new InputStreamReader(new FileInputStream(new File(file)));
|
||||
|
||||
final SyndFeed feed = input.build(reader);
|
||||
|
||||
final List items = feed.getEntries();
|
||||
SyndEntry item;
|
||||
|
||||
for (int i = items.size() - 1; i >= 0; i--)
|
||||
{
|
||||
item = (SyndEntryImpl) items.get(i);
|
||||
history.add(item.getTitle());
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (reader != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
reader.close();
|
||||
}
|
||||
catch (IOException ignore)
|
||||
{
|
||||
; // Do nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the current entries.
|
||||
*
|
||||
|
@ -167,55 +216,6 @@ public class EntriesMgr
|
|||
return today;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the backlogs.
|
||||
*
|
||||
* @param file The file containing the backlogs.
|
||||
* @param history The history list.
|
||||
*
|
||||
* @throws FileNotFoundException If the file was not found.
|
||||
* @throws FeedException If an error occurred while reading the feed.
|
||||
*/
|
||||
public static void loadBacklogs(String file, List<String> history)
|
||||
throws FileNotFoundException, FeedException
|
||||
{
|
||||
history.clear();
|
||||
|
||||
final SyndFeedInput input = new SyndFeedInput();
|
||||
|
||||
InputStreamReader reader = null;
|
||||
|
||||
try
|
||||
{
|
||||
reader = new InputStreamReader(new FileInputStream(new File(file)));
|
||||
|
||||
final SyndFeed feed = input.build(reader);
|
||||
|
||||
final List items = feed.getEntries();
|
||||
SyndEntry item;
|
||||
|
||||
for (int i = items.size() - 1; i >= 0; i--)
|
||||
{
|
||||
item = (SyndEntryImpl) items.get(i);
|
||||
history.add(item.getTitle());
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (reader != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
reader.close();
|
||||
}
|
||||
catch (IOException ignore)
|
||||
{
|
||||
; // Do nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the entries.
|
||||
*
|
||||
|
@ -260,8 +260,7 @@ public class EntriesMgr
|
|||
|
||||
buff = new StringBuffer(
|
||||
"Posted by <b>" + entry.getNick() + "</b> on <a href=\"irc://" + bot.getIrcServer() + '/'
|
||||
+ entry.getChannel() + "\"><b>" + entry.getChannel() + "</b></a>"
|
||||
);
|
||||
+ entry.getChannel() + "\"><b>" + entry.getChannel() + "</b></a>");
|
||||
|
||||
if (entry.getCommentsCount() > 0)
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)EntryComment.java
|
||||
* EntryComment.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)EntryLink.java
|
||||
* EntryLink.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import com.sun.syndication.feed.synd.SyndCategoryImpl;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)FeedReader.java
|
||||
* FeedReader.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import com.sun.syndication.feed.synd.SyndEntry;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)GoogleSearch.java
|
||||
* GoogleSearch.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import org.json.JSONArray;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)Lookup.java
|
||||
* Lookup.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import org.apache.commons.net.WhoisClient;
|
||||
|
@ -59,7 +58,7 @@ public class Lookup
|
|||
/**
|
||||
* Disables the default constructor.
|
||||
*
|
||||
* @throws UnsupportedOperationException if an error occurred. if the constructor is called.
|
||||
* @throws UnsupportedOperationException If the constructor is called.
|
||||
*/
|
||||
private Lookup()
|
||||
throws UnsupportedOperationException
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)Mobibot.java
|
||||
* Mobibot.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -83,21 +83,11 @@ public class Mobibot extends PircBot
|
|||
|
||||
private static final int DEFAULT_TELL_MAX_DAYS = 7;
|
||||
|
||||
/**
|
||||
* The number of days message are kept.
|
||||
*/
|
||||
private int tellMaxDays = DEFAULT_TELL_MAX_DAYS;
|
||||
|
||||
/**
|
||||
* The default {@link Commands#TELL_CMD) message max queue size.
|
||||
*/
|
||||
private static final int DEFAULT_TELL_MAX_SIZE = 50;
|
||||
|
||||
/**
|
||||
* The maximum number of {@link Commands#TELL_CMD} messages allowed.
|
||||
*/
|
||||
private int tellMaxSize = DEFAULT_TELL_MAX_SIZE;
|
||||
|
||||
/**
|
||||
* The double tab indent (8 spaces).
|
||||
*/
|
||||
|
@ -280,6 +270,16 @@ public class Mobibot extends PircBot
|
|||
*/
|
||||
private String identNick = "";
|
||||
|
||||
/**
|
||||
* The number of days message are kept.
|
||||
*/
|
||||
private int tellMaxDays = DEFAULT_TELL_MAX_DAYS;
|
||||
|
||||
/**
|
||||
* The maximum number of {@link Commands#TELL_CMD} messages allowed.
|
||||
*/
|
||||
private int tellMaxSize = DEFAULT_TELL_MAX_SIZE;
|
||||
|
||||
/**
|
||||
* Today's date.
|
||||
*/
|
||||
|
@ -1301,8 +1301,7 @@ public class Mobibot extends PircBot
|
|||
send(sender,
|
||||
DOUBLE_INDENT + Utils
|
||||
.bold(Commands.CYCLE_CMD + " " + Commands.ME_CMD + " " + Commands.MSG_CMD + " "
|
||||
+ Commands.SAY_CMD + " " + Commands.VERSION_CMD)
|
||||
);
|
||||
+ Commands.SAY_CMD + " " + Commands.VERSION_CMD));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1401,8 +1400,7 @@ public class Mobibot extends PircBot
|
|||
send(sender,
|
||||
"Uptime: " + days + " day(s) " + hours + " hour(s) " + minutes + " minute(s) [Entries: " + entries.size()
|
||||
+ (isTellEnabled() && isOp(sender) ? ", Messages: " + tellMessages.size() : "") + ']',
|
||||
isPrivate
|
||||
);
|
||||
isPrivate);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2268,8 +2266,7 @@ public class Mobibot extends PircBot
|
|||
private void recap(String sender, String message, boolean isAction)
|
||||
{
|
||||
recap.add(Utils.UTC_SDF.format(Calendar.getInstance().getTime()) + " -> " + sender + (isAction ? " " : ": ")
|
||||
+ message
|
||||
);
|
||||
+ message);
|
||||
|
||||
if (recap.size() > MAX_RECAP)
|
||||
{
|
||||
|
@ -2321,8 +2318,7 @@ public class Mobibot extends PircBot
|
|||
{
|
||||
send(nickname,
|
||||
Utils.bold("You") + " wanted me to remind you: " + Colors.REVERSE + message
|
||||
.getMessage() + Colors.REVERSE, true
|
||||
);
|
||||
.getMessage() + Colors.REVERSE, true);
|
||||
|
||||
message.setIsReceived();
|
||||
message.setIsNotified();
|
||||
|
@ -2335,8 +2331,7 @@ public class Mobibot extends PircBot
|
|||
send(nickname,
|
||||
message.getSender() + " wanted me to tell you: " + Colors.REVERSE + message
|
||||
.getMessage() + Colors.REVERSE,
|
||||
true
|
||||
);
|
||||
true);
|
||||
|
||||
message.setIsReceived();
|
||||
|
||||
|
@ -2350,8 +2345,7 @@ public class Mobibot extends PircBot
|
|||
"Your message " + Colors.REVERSE + "[ID " + message.getId() + ']' + Colors.REVERSE
|
||||
+ " was sent to " + Utils.bold(message.getRecipient()) + " on " + Utils.UTC_SDF
|
||||
.format(message.getReceived()),
|
||||
true
|
||||
);
|
||||
true);
|
||||
|
||||
message.setIsNotified();
|
||||
|
||||
|
@ -2471,8 +2465,7 @@ public class Mobibot extends PircBot
|
|||
send(sender,
|
||||
Utils.bold(message.getSender()) + " --> " + Utils.bold(message.getRecipient()) + " [ID: "
|
||||
+ message.getId() + ", " + (message.isReceived() ? "DELIVERED" : "QUEUED") + ']',
|
||||
true
|
||||
);
|
||||
true);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -2500,8 +2493,7 @@ public class Mobibot extends PircBot
|
|||
Utils.bold(message.getSender()) + " --> " + Utils.bold(message.getRecipient()) + " ["
|
||||
+ Utils.UTC_SDF.format(message.getReceived()) + ", ID: " + message.getId()
|
||||
+ ", DELIVERED]",
|
||||
true
|
||||
);
|
||||
true);
|
||||
|
||||
}
|
||||
else
|
||||
|
@ -2509,8 +2501,7 @@ public class Mobibot extends PircBot
|
|||
send(sender,
|
||||
Utils.bold(message.getSender()) + " --> " + Utils.bold(message.getRecipient()) + " ["
|
||||
+ Utils.UTC_SDF.format(message.getQueued()) + ", ID: " + message.getId() + ", QUEUED]",
|
||||
true
|
||||
);
|
||||
true);
|
||||
}
|
||||
|
||||
send(sender, DOUBLE_INDENT + message.getMessage(), true);
|
||||
|
@ -2527,8 +2518,7 @@ public class Mobibot extends PircBot
|
|||
send(sender,
|
||||
DOUBLE_INDENT + Utils
|
||||
.bold(getNick() + ": " + Commands.TELL_CMD + ' ' + Commands.TELL_DEL_CMD + " <id|"
|
||||
+ Commands.TELL_ALL_CMD + '>')
|
||||
);
|
||||
+ Commands.TELL_ALL_CMD + '>'));
|
||||
send(sender, "Messages are kept for " + Utils.bold(tellMaxDays) + " days.");
|
||||
}
|
||||
}
|
||||
|
@ -2789,8 +2779,7 @@ public class Mobibot extends PircBot
|
|||
send(sender,
|
||||
"To view more, try: " + Utils
|
||||
.bold(getNick() + ": " + Commands.VIEW_CMD + ' ' + (i + 1) + ' ' + lcArgs),
|
||||
isPrivate
|
||||
);
|
||||
isPrivate);
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)Quote.java
|
||||
* Quote.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import org.jibble.pircbot.Colors;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)ReleaseInfo.java
|
||||
* ReleaseInfo.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -82,6 +82,16 @@ public class ReleaseInfo
|
|||
return buildDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get buildNumber (set during build process to 0).
|
||||
*
|
||||
* @return int buildNumber
|
||||
*/
|
||||
public static int getBuildNumber()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get project (set during build process to "mobibot").
|
||||
*
|
||||
|
@ -102,14 +112,4 @@ public class ReleaseInfo
|
|||
return version;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get buildNumber (set during build process to 0).
|
||||
*
|
||||
* @return int buildNumber
|
||||
*/
|
||||
public static int getBuildNumber()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)StockQuote.java
|
||||
* StockQuote.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import com.Ostermiller.util.CSVParser;
|
||||
|
|
|
@ -4,20 +4,20 @@ import javax.swing.*;
|
|||
|
||||
/**
|
||||
* This is the 3rd version of SwingWorker (also known as SwingWorker 3), an abstract class that you subclass to perform
|
||||
* GUI-related work in a dedicated thread. For instructions on and examples of using this class, see:
|
||||
* <p>
|
||||
* GUI-related work in a dedicated thread. For instructions on and examples of using this class, see:
|
||||
* <p/>
|
||||
* http://java.sun.com/docs/books/tutorial/uiswing/misc/threads.html
|
||||
* </p>
|
||||
* Note that the API changed slightly in the 3rd version: You must now invoke start() on the SwingWorker after creating
|
||||
* it.
|
||||
* <p/>
|
||||
* Note that the API changed slightly in the 3rd version:
|
||||
* You must now invoke start() on the SwingWorker after creating it.
|
||||
*/
|
||||
@SuppressWarnings("ALL")
|
||||
public abstract class SwingWorker
|
||||
{
|
||||
private Object value; // see getValue(), setValue()
|
||||
|
||||
private ThreadVar threadVar;
|
||||
|
||||
private Object value; // see getValue(), setValue()
|
||||
|
||||
/**
|
||||
* Start a thread that will call the <code>construct</code> method and then exit.
|
||||
*/
|
||||
|
@ -67,19 +67,6 @@ public abstract class SwingWorker
|
|||
*/
|
||||
public abstract Object construct();
|
||||
|
||||
/**
|
||||
* A new method that interrupts the worker thread. Call this method to force the worker to stop what it's doing.
|
||||
*/
|
||||
public void interrupt()
|
||||
{
|
||||
Thread t = threadVar.get();
|
||||
if (t != null)
|
||||
{
|
||||
t.interrupt();
|
||||
}
|
||||
threadVar.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the value created by the <code>construct</code> method. Returns null if either the constructing thread or
|
||||
* the current thread was interrupted before a value was produced.
|
||||
|
@ -127,6 +114,19 @@ public abstract class SwingWorker
|
|||
value = x;
|
||||
}
|
||||
|
||||
/**
|
||||
* A new method that interrupts the worker thread. Call this method to force the worker to stop what it's doing.
|
||||
*/
|
||||
public void interrupt()
|
||||
{
|
||||
Thread t = threadVar.get();
|
||||
if (t != null)
|
||||
{
|
||||
t.interrupt();
|
||||
}
|
||||
threadVar.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Start the worker thread.
|
||||
*/
|
||||
|
@ -151,14 +151,14 @@ public abstract class SwingWorker
|
|||
thread = t;
|
||||
}
|
||||
|
||||
synchronized Thread get()
|
||||
{
|
||||
return thread;
|
||||
}
|
||||
|
||||
synchronized void clear()
|
||||
{
|
||||
thread = null;
|
||||
}
|
||||
|
||||
synchronized Thread get()
|
||||
{
|
||||
return thread;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)TellMessage.java
|
||||
* TellMessage.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
@ -47,23 +46,24 @@ import java.util.Date;
|
|||
*/
|
||||
public class TellMessage implements Serializable
|
||||
{
|
||||
@SuppressWarnings({"UnusedDeclaration"})
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final String sender;
|
||||
|
||||
private final String recipient;
|
||||
|
||||
private final String message;
|
||||
|
||||
private final String id;
|
||||
|
||||
private final String message;
|
||||
|
||||
final private Date queued;
|
||||
|
||||
private Date received;
|
||||
private final String recipient;
|
||||
|
||||
private final String sender;
|
||||
|
||||
private boolean isNotified;
|
||||
|
||||
private boolean isReceived;
|
||||
|
||||
private boolean isNotified;
|
||||
private Date received;
|
||||
|
||||
/**
|
||||
* Create a new message.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)TellMessagesMgr.java
|
||||
* TellMessagesMgr.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import org.apache.commons.logging.impl.Log4JLogger;
|
||||
|
@ -54,7 +53,7 @@ public class TellMessagesMgr
|
|||
/**
|
||||
* Disables the default constructor.
|
||||
*
|
||||
* @throws UnsupportedOperationException if an error occurred. if the constructor is called.
|
||||
* @throws UnsupportedOperationException If the constructor is called.
|
||||
*/
|
||||
private TellMessagesMgr()
|
||||
throws UnsupportedOperationException
|
||||
|
@ -62,6 +61,35 @@ public class TellMessagesMgr
|
|||
throw new UnsupportedOperationException("Illegal constructor call.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleans the messages queue
|
||||
*
|
||||
* @param tellMessages The messages list.
|
||||
* @param tellMaxDays The maximum number of days to keep messages for.
|
||||
*
|
||||
* @return <code>True</code> if the queue was cleaned.
|
||||
*/
|
||||
public static boolean cleanTellMessages(List<TellMessage> tellMessages, int tellMaxDays)
|
||||
{
|
||||
final Calendar maxDate = Calendar.getInstance();
|
||||
final Date today = new Date();
|
||||
boolean cleaned = false;
|
||||
|
||||
for (final TellMessage message : tellMessages)
|
||||
{
|
||||
maxDate.setTime(message.getQueued());
|
||||
maxDate.add(Calendar.DATE, tellMaxDays);
|
||||
|
||||
if (maxDate.getTime().before(today))
|
||||
{
|
||||
tellMessages.remove(message);
|
||||
cleaned = true;
|
||||
}
|
||||
}
|
||||
|
||||
return cleaned;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the messages.
|
||||
*
|
||||
|
@ -79,7 +107,6 @@ public class TellMessagesMgr
|
|||
|
||||
try
|
||||
{
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug("Loading the messages.");
|
||||
|
@ -140,27 +167,4 @@ public class TellMessagesMgr
|
|||
logger.error("Unable to save messages queue.", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleans the messages queue
|
||||
*
|
||||
* @param tellMessages The messages list.
|
||||
* @param tellMaxDays The maximum number of days to keep messages for.
|
||||
*/
|
||||
public static void cleanTellMessages(List<TellMessage> tellMessages, int tellMaxDays)
|
||||
{
|
||||
final Calendar maxDate = Calendar.getInstance();
|
||||
final Date today = new Date();
|
||||
|
||||
for (final TellMessage message : tellMessages)
|
||||
{
|
||||
maxDate.setTime(message.getQueued());
|
||||
maxDate.add(Calendar.DATE, tellMaxDays);
|
||||
|
||||
if (maxDate.getTime().before(today))
|
||||
{
|
||||
tellMessages.remove(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)Twitter.java
|
||||
* Twitter.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import twitter4j.Status;
|
||||
|
@ -47,26 +46,6 @@ import twitter4j.conf.ConfigurationBuilder;
|
|||
*/
|
||||
public class Twitter implements Runnable
|
||||
{
|
||||
/**
|
||||
* The bot.
|
||||
*/
|
||||
private final Mobibot bot;
|
||||
|
||||
/**
|
||||
* The Twitter consumer secret.
|
||||
*/
|
||||
private final String consumerSecret;
|
||||
|
||||
/**
|
||||
* The Twitter consumer key.
|
||||
*/
|
||||
private final String consumerKey;
|
||||
|
||||
/**
|
||||
* The Twitter message.
|
||||
*/
|
||||
private final String message;
|
||||
|
||||
/**
|
||||
* The Twitter access token.
|
||||
*/
|
||||
|
@ -77,6 +56,26 @@ public class Twitter implements Runnable
|
|||
*/
|
||||
private final String accessTokenSecret;
|
||||
|
||||
/**
|
||||
* The bot.
|
||||
*/
|
||||
private final Mobibot bot;
|
||||
|
||||
/**
|
||||
* The Twitter consumer key.
|
||||
*/
|
||||
private final String consumerKey;
|
||||
|
||||
/**
|
||||
* The Twitter consumer secret.
|
||||
*/
|
||||
private final String consumerSecret;
|
||||
|
||||
/**
|
||||
* The Twitter message.
|
||||
*/
|
||||
private final String message;
|
||||
|
||||
/**
|
||||
* The nick of the person who sent the message.
|
||||
*/
|
||||
|
@ -122,8 +121,7 @@ public class Twitter implements Runnable
|
|||
|
||||
bot.send(sender,
|
||||
"You message was posted to http://twitter.com/" + twitter.getScreenName() + "/statuses/" + status
|
||||
.getId()
|
||||
);
|
||||
.getId());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
|
@ -9,15 +9,9 @@ import java.io.BufferedReader;
|
|||
import java.io.InputStreamReader;
|
||||
|
||||
/**
|
||||
* The <code>TwitterOAuth</code> class.
|
||||
* <p>
|
||||
* Go to <a href="http://twitter.com/oauth_clients/new">http://twitter.com/oauth_clients/new</a> to register your bot.
|
||||
* </p>
|
||||
* Then execute:
|
||||
* <p>
|
||||
* <code>java -cp "mobibot.jar:lib/*" net.thauvin.erik.mobibot.TwitterOAuth <consumerKey> <consumerSecret></code>
|
||||
* </p>
|
||||
* and follow the prompts/instructions.
|
||||
* The <code>TwitterOAuth</code> class. <p> Go to <a href="http://twitter.com/oauth_clients/new">http://twitter.com/oauth_clients/new</a>
|
||||
* to register your bot. </p> Then execute: <p> <code>java -cp "mobibot.jar:lib/*" net.thauvin.erik.mobibot.TwitterOAuth
|
||||
* <consumerKey> <consumerSecret></code> </p> and follow the prompts/instructions.
|
||||
*
|
||||
* @author <a href="mailto:erik@thauvin.net">Erik C. Thauvin</a>
|
||||
* @author <a href="http://twitter4j.org/en/code-examples.html#oauth">http://twitter4j.org/en/code-examples.html#oauth</a>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)Utils.java
|
||||
* Utils.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import org.jibble.pircbot.Colors;
|
||||
|
@ -58,20 +57,20 @@ public class Utils
|
|||
*/
|
||||
public static final SimpleDateFormat TIMESTAMP_SDF = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||
|
||||
/**
|
||||
* The UTC (yyyy-MM-dd HH:mm) simple date format.
|
||||
*/
|
||||
static final SimpleDateFormat UTC_SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
||||
|
||||
/**
|
||||
* The ISO (YYYY-MM-DD) simple date format.
|
||||
*/
|
||||
static final SimpleDateFormat ISO_SDF = new SimpleDateFormat("yyyy-MM-dd");
|
||||
|
||||
/**
|
||||
* The UTC (yyyy-MM-dd HH:mm) simple date format.
|
||||
*/
|
||||
static final SimpleDateFormat UTC_SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
||||
|
||||
/**
|
||||
* Disables the default constructor.
|
||||
*
|
||||
* @throws UnsupportedOperationException if an error occurred. if the constructor is called.
|
||||
* @throws UnsupportedOperationException If the constructor is called.
|
||||
*/
|
||||
private Utils()
|
||||
throws UnsupportedOperationException
|
||||
|
@ -79,200 +78,6 @@ public class Utils
|
|||
throw new UnsupportedOperationException("Illegal constructor call.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts XML/XHTML entities to plain text.
|
||||
*
|
||||
* @param str The string to unescape.
|
||||
*
|
||||
* @return The unescaped string.
|
||||
*/
|
||||
public static String unescapeXml(String str)
|
||||
{
|
||||
String s = str.replaceAll("&", "&");
|
||||
s = s.replaceAll("<", "<");
|
||||
s = s.replaceAll(">", ">");
|
||||
s = s.replaceAll(""", "\"");
|
||||
s = s.replaceAll("'", "'");
|
||||
s = s.replaceAll("'", "'");
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies a file.
|
||||
*
|
||||
* @param in The source file.
|
||||
* @param out The destination file.
|
||||
*
|
||||
* @throws java.io.IOException If the file could not be copied.
|
||||
*/
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public static void copyFile(File in, File out)
|
||||
throws IOException
|
||||
{
|
||||
FileChannel inChannel = null;
|
||||
FileChannel outChannel = null;
|
||||
FileInputStream input = null;
|
||||
FileOutputStream output = null;
|
||||
|
||||
try
|
||||
{
|
||||
input = new FileInputStream(in);
|
||||
output = new FileOutputStream(out);
|
||||
|
||||
inChannel = input.getChannel();
|
||||
outChannel = output.getChannel();
|
||||
|
||||
inChannel.transferTo(0L, inChannel.size(), outChannel);
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
if (inChannel != null)
|
||||
{
|
||||
inChannel.close();
|
||||
}
|
||||
|
||||
if (input != null)
|
||||
{
|
||||
input.close();
|
||||
}
|
||||
}
|
||||
catch (Exception ignore)
|
||||
{
|
||||
; // Do nothing
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (outChannel != null)
|
||||
{
|
||||
outChannel.close();
|
||||
}
|
||||
|
||||
if (output != null)
|
||||
{
|
||||
output.close();
|
||||
}
|
||||
}
|
||||
catch (Exception ignore)
|
||||
{
|
||||
; // Do nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current Internet (beat) Time.
|
||||
*
|
||||
* @return The Internet Time string.
|
||||
*/
|
||||
public static String internetTime()
|
||||
{
|
||||
final Calendar gc = Calendar.getInstance();
|
||||
|
||||
final int offset = (gc.get(Calendar.ZONE_OFFSET) / (60 * 60 * 1000));
|
||||
int hh = gc.get(Calendar.HOUR_OF_DAY);
|
||||
final int mm = gc.get(Calendar.MINUTE);
|
||||
final int ss = gc.get(Calendar.SECOND);
|
||||
|
||||
hh -= offset; // GMT
|
||||
hh += 1; // BMT
|
||||
|
||||
long beats = Math.round(Math.floor((double) ((((hh * 3600) + (mm * 60) + ss) * 1000) / 86400)));
|
||||
|
||||
if (beats >= 1000)
|
||||
{
|
||||
beats -= (long) 1000;
|
||||
}
|
||||
else if (beats < 0)
|
||||
{
|
||||
beats += (long) 1000;
|
||||
}
|
||||
|
||||
if (beats < 10)
|
||||
{
|
||||
return ("@00" + String.valueOf(beats));
|
||||
}
|
||||
else if (beats < 100)
|
||||
{
|
||||
return ("@0" + String.valueOf(beats));
|
||||
}
|
||||
|
||||
return ('@' + String.valueOf(beats));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a property as an int.
|
||||
*
|
||||
* @param property The port property value.
|
||||
* @param def The default property value.
|
||||
*
|
||||
* @return The port or default value if invalid.
|
||||
*/
|
||||
public static int getIntProperty(String property, int def)
|
||||
{
|
||||
int prop;
|
||||
|
||||
try
|
||||
{
|
||||
prop = Integer.parseInt(property);
|
||||
}
|
||||
catch (NumberFormatException ignore)
|
||||
{
|
||||
prop = def;
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that the given location (File/URL) has a trailing slash (<code>/</code>) to indicate a directory.
|
||||
*
|
||||
* @param location The File or URL location.
|
||||
* @param isUrl Set to true if the location is a URL
|
||||
*
|
||||
* @return The location ending with a slash.
|
||||
*/
|
||||
public static String ensureDir(String location, boolean isUrl)
|
||||
{
|
||||
if (isUrl)
|
||||
{
|
||||
if (location.charAt(location.length() - 1) == '/')
|
||||
{
|
||||
return location;
|
||||
}
|
||||
else
|
||||
{
|
||||
return location + '/';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (location.charAt(location.length() - 1) == File.separatorChar)
|
||||
{
|
||||
return location;
|
||||
}
|
||||
else
|
||||
{
|
||||
return location + File.separatorChar;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the given string is valid.
|
||||
*
|
||||
* @param s The string to validate.
|
||||
*
|
||||
* @return true if the string is non-empty and not null, false otherwise.
|
||||
*/
|
||||
public static boolean isValidString(String s)
|
||||
{
|
||||
return (s != null) && (s.trim().length() > 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes the given int bold.
|
||||
*
|
||||
|
@ -285,16 +90,6 @@ public class Utils
|
|||
return Colors.BOLD + i + Colors.BOLD;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns today's date.
|
||||
*
|
||||
* @return Today's date in {@link #ISO_SDF ISO} format.
|
||||
*/
|
||||
public static String today()
|
||||
{
|
||||
return ISO_SDF.format(Calendar.getInstance().getTime());
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds an entry's comment for display on the channel.
|
||||
*
|
||||
|
@ -385,4 +180,208 @@ public class Utils
|
|||
{
|
||||
return (Commands.LINK_CMD + (entryIndex + 1) + "T: " + entry.getDeliciousTags().replaceAll(",", ", "));
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies a file.
|
||||
*
|
||||
* @param in The source file.
|
||||
* @param out The destination file.
|
||||
*
|
||||
* @throws java.io.IOException If the file could not be copied.
|
||||
*/
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public static void copyFile(File in, File out)
|
||||
throws IOException
|
||||
{
|
||||
FileChannel inChannel = null;
|
||||
FileChannel outChannel = null;
|
||||
FileInputStream input = null;
|
||||
FileOutputStream output = null;
|
||||
|
||||
try
|
||||
{
|
||||
input = new FileInputStream(in);
|
||||
output = new FileOutputStream(out);
|
||||
|
||||
inChannel = input.getChannel();
|
||||
outChannel = output.getChannel();
|
||||
|
||||
inChannel.transferTo(0L, inChannel.size(), outChannel);
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
if (inChannel != null)
|
||||
{
|
||||
inChannel.close();
|
||||
}
|
||||
|
||||
if (input != null)
|
||||
{
|
||||
input.close();
|
||||
}
|
||||
}
|
||||
catch (Exception ignore)
|
||||
{
|
||||
; // Do nothing
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (outChannel != null)
|
||||
{
|
||||
outChannel.close();
|
||||
}
|
||||
|
||||
if (output != null)
|
||||
{
|
||||
output.close();
|
||||
}
|
||||
}
|
||||
catch (Exception ignore)
|
||||
{
|
||||
; // Do nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that the given location (File/URL) has a trailing slash (<code>/</code>) to indicate a directory.
|
||||
*
|
||||
* @param location The File or URL location.
|
||||
* @param isUrl Set to true if the location is a URL
|
||||
*
|
||||
* @return The location ending with a slash.
|
||||
*/
|
||||
public static String ensureDir(String location, boolean isUrl)
|
||||
{
|
||||
if (isUrl)
|
||||
{
|
||||
if (location.charAt(location.length() - 1) == '/')
|
||||
{
|
||||
return location;
|
||||
}
|
||||
else
|
||||
{
|
||||
return location + '/';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (location.charAt(location.length() - 1) == File.separatorChar)
|
||||
{
|
||||
return location;
|
||||
}
|
||||
else
|
||||
{
|
||||
return location + File.separatorChar;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a property as an int.
|
||||
*
|
||||
* @param property The port property value.
|
||||
* @param def The default property value.
|
||||
*
|
||||
* @return The port or default value if invalid.
|
||||
*/
|
||||
public static int getIntProperty(String property, int def)
|
||||
{
|
||||
int prop;
|
||||
|
||||
try
|
||||
{
|
||||
prop = Integer.parseInt(property);
|
||||
}
|
||||
catch (NumberFormatException ignore)
|
||||
{
|
||||
prop = def;
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current Internet (beat) Time.
|
||||
*
|
||||
* @return The Internet Time string.
|
||||
*/
|
||||
public static String internetTime()
|
||||
{
|
||||
final Calendar gc = Calendar.getInstance();
|
||||
|
||||
final int offset = (gc.get(Calendar.ZONE_OFFSET) / (60 * 60 * 1000));
|
||||
int hh = gc.get(Calendar.HOUR_OF_DAY);
|
||||
final int mm = gc.get(Calendar.MINUTE);
|
||||
final int ss = gc.get(Calendar.SECOND);
|
||||
|
||||
hh -= offset; // GMT
|
||||
hh += 1; // BMT
|
||||
|
||||
long beats = Math.round(Math.floor((double) ((((hh * 3600) + (mm * 60) + ss) * 1000) / 86400)));
|
||||
|
||||
if (beats >= 1000)
|
||||
{
|
||||
beats -= (long) 1000;
|
||||
}
|
||||
else if (beats < 0)
|
||||
{
|
||||
beats += (long) 1000;
|
||||
}
|
||||
|
||||
if (beats < 10)
|
||||
{
|
||||
return ("@00" + String.valueOf(beats));
|
||||
}
|
||||
else if (beats < 100)
|
||||
{
|
||||
return ("@0" + String.valueOf(beats));
|
||||
}
|
||||
|
||||
return ('@' + String.valueOf(beats));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the given string is valid.
|
||||
*
|
||||
* @param s The string to validate.
|
||||
*
|
||||
* @return true if the string is non-empty and not null, false otherwise.
|
||||
*/
|
||||
public static boolean isValidString(String s)
|
||||
{
|
||||
return (s != null) && (s.trim().length() > 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns today's date.
|
||||
*
|
||||
* @return Today's date in {@link #ISO_SDF ISO} format.
|
||||
*/
|
||||
public static String today()
|
||||
{
|
||||
return ISO_SDF.format(Calendar.getInstance().getTime());
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts XML/XHTML entities to plain text.
|
||||
*
|
||||
* @param str The string to unescape.
|
||||
*
|
||||
* @return The unescaped string.
|
||||
*/
|
||||
public static String unescapeXml(String str)
|
||||
{
|
||||
String s = str.replaceAll("&", "&");
|
||||
s = s.replaceAll("<", "<");
|
||||
s = s.replaceAll(">", ">");
|
||||
s = s.replaceAll(""", "\"");
|
||||
s = s.replaceAll("'", "'");
|
||||
s = s.replaceAll("'", "'");
|
||||
|
||||
return s;
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)War.java
|
||||
* War.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -58,7 +58,7 @@ public class War
|
|||
/**
|
||||
* Disables the default constructor.
|
||||
*
|
||||
* @throws UnsupportedOperationException if an error occurred. if the constructor is called.
|
||||
* @throws UnsupportedOperationException If the constructor is called.
|
||||
*/
|
||||
private War()
|
||||
throws UnsupportedOperationException
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)Weather.java
|
||||
* Weather.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,7 +31,6 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.thauvin.erik.mobibot;
|
||||
|
||||
import net.sf.jweather.metar.Metar;
|
||||
|
@ -65,6 +64,11 @@ public class Weather implements Runnable
|
|||
*/
|
||||
private final Mobibot bot;
|
||||
|
||||
/**
|
||||
* The private message flag.
|
||||
*/
|
||||
private final boolean isPrivate;
|
||||
|
||||
/**
|
||||
* The nick of the person who sent the message.
|
||||
*/
|
||||
|
@ -75,11 +79,6 @@ public class Weather implements Runnable
|
|||
*/
|
||||
private final String station;
|
||||
|
||||
/**
|
||||
* The private message flag.
|
||||
*/
|
||||
private final boolean isPrivate;
|
||||
|
||||
/**
|
||||
* Creates a new {@link Weather} instance.
|
||||
*
|
||||
|
@ -114,8 +113,7 @@ public class Weather implements Runnable
|
|||
bot.send(sender,
|
||||
"At: " + Utils.UTC_SDF.format(metar.getDate()) + " UTC (" + (
|
||||
((new Date()).getTime() - metar.getDate().getTime()) / 1000L / 60L) + " minutes ago)",
|
||||
isPrivate
|
||||
);
|
||||
isPrivate);
|
||||
|
||||
result = metar.getWindSpeedInMPH();
|
||||
|
||||
|
@ -124,8 +122,7 @@ public class Weather implements Runnable
|
|||
bot.send(sender,
|
||||
"Wind Speed: " + result + " mph, " + metar.getWindSpeedInKnots() + " knots, " + metar
|
||||
.getWindSpeedInMPS() + " m/s",
|
||||
isPrivate
|
||||
);
|
||||
isPrivate);
|
||||
}
|
||||
|
||||
result = metar.getVisibility();
|
||||
|
@ -135,8 +132,7 @@ public class Weather implements Runnable
|
|||
bot.send(sender,
|
||||
"Visibility: " + (metar.getVisibilityLessThan() ? "< " : "") + NUMBER_FORMAT.format(result)
|
||||
+ " mi, " + metar.getVisibilityInKilometers() + " km",
|
||||
isPrivate
|
||||
);
|
||||
isPrivate);
|
||||
}
|
||||
|
||||
result = metar.getPressure();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* @(#)Time.java
|
||||
* WorldTime.java
|
||||
*
|
||||
* Copyright (c) 2004-2014, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2004-2015, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -48,16 +48,16 @@ import java.util.TreeMap;
|
|||
*/
|
||||
public class WorldTime
|
||||
{
|
||||
/**
|
||||
* The countries supported by the {@link net.thauvin.erik.mobibot.Commands#TIME_CMD time} command.
|
||||
*/
|
||||
private static final Map<String, String> COUNTRIES_MAP = new TreeMap<String, String>();
|
||||
|
||||
/**
|
||||
* The beats (Internet Time) keyword.
|
||||
*/
|
||||
private static final String BEATS_KEYWORD = ".beats";
|
||||
|
||||
/**
|
||||
* The countries supported by the {@link net.thauvin.erik.mobibot.Commands#TIME_CMD time} command.
|
||||
*/
|
||||
private static final Map<String, String> COUNTRIES_MAP = new TreeMap<String, String>();
|
||||
|
||||
/**
|
||||
* The date/time format for the {@link net.thauvin.erik.mobibot.Commands#TIME_CMD time} command.
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue