Code clean/reformat.
Updated copyright.
This commit is contained in:
parent
d02377a491
commit
0255fa537f
26 changed files with 1298 additions and 1443 deletions
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.path="K:\java\mobibot" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="0.6" relativePaths="false" type="JAVA_MODULE" version="4">
|
||||
<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="0.6" relativePaths="false" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
|
@ -31,5 +31,4 @@
|
|||
<orderEntry type="library" exported="" name="Gradle: exp4j-0.3.11" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: utils-1.07.00" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
</module>
|
15
mobibot.ipr
15
mobibot.ipr
|
@ -72,20 +72,24 @@
|
|||
</component>
|
||||
<component name="CopyrightManager" default="Mobibot">
|
||||
<copyright>
|
||||
<option name="notice" value="@(#)&#36;file.fileName Copyright (c) 2004-&#36;today.year, Erik C. Thauvin (erik@thauvin.net) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." />
|
||||
<option name="notice" value="&#36;file.fileName Copyright (c) 2004-&#36;today.year, Erik C. Thauvin (erik@thauvin.net) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." />
|
||||
<option name="keyword" value="Copyright" />
|
||||
<option name="allowReplaceKeyword" value="Erik C. Thauvin" />
|
||||
<option name="myName" value="Mobibot" />
|
||||
<option name="myLocal" value="true" />
|
||||
</copyright>
|
||||
<module2copyright>
|
||||
<element module="All" copyright="Mobibot" />
|
||||
<element module="Source" copyright="Mobibot" />
|
||||
</module2copyright>
|
||||
<LanguageOptions name="__TEMPLATE__">
|
||||
<option name="addBlankAfter" value="false" />
|
||||
</LanguageOptions>
|
||||
</component>
|
||||
<component name="DependenciesAnalyzeManager">
|
||||
<option name="myForwardDirection" value="false" />
|
||||
</component>
|
||||
<component name="DependencyValidationManager">
|
||||
<scope name="Source" pattern="file:src/main/java/net/thauvin/erik/mobibot/*&&!file:src/main/java/net/thauvin/erik/mobibot/SwingWorker.java&&!file:src/main/java/net/thauvin/erik/mobibot/TwitterOAuth.java" />
|
||||
<option name="SKIP_IMPORT_STATEMENTS" value="false" />
|
||||
</component>
|
||||
<component name="EclipseCompilerSettings">
|
||||
|
@ -120,7 +124,7 @@
|
|||
<option name="gradleHome" value="C:/gradle" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="K:\java\mobibot" />
|
||||
<option value="$PROJECT_DIR$" />
|
||||
</set>
|
||||
</option>
|
||||
</GradleProjectSettings>
|
||||
|
@ -651,7 +655,7 @@
|
|||
<module fileurl="file://$PROJECT_DIR$/mobibot.iml" filepath="$PROJECT_DIR$/mobibot.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_5" assert-keyword="true" jdk-15="true" project-jdk-name="1.7.x" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_5" assert-keyword="true" jdk-15="true" project-jdk-name="1.8.x" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
<component name="ResourceManagerContainer">
|
||||
|
@ -840,5 +844,4 @@
|
|||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
</project>
|
||||
|
||||
</project>
|
1656
mobibot.iws
1656
mobibot.iws
File diff suppressed because it is too large
Load diff
|
@ -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