diff --git a/src/commercial/roar.jar b/src/commercial/roar.jar index 09cc37d1..41289e49 100644 Binary files a/src/commercial/roar.jar and b/src/commercial/roar.jar differ diff --git a/src/java/org/jivesoftware/resource/default.properties b/src/java/org/jivesoftware/resource/default.properties index c2a22711..3b9f40bf 100644 --- a/src/java/org/jivesoftware/resource/default.properties +++ b/src/java/org/jivesoftware/resource/default.properties @@ -122,14 +122,15 @@ INSTALL_PLUGINS_DISABLED = # set true if you want to disable deinstalling of Plugins DEINSTALL_PLUGINS_DISABLED = # Put plugins here that you dont want enabled -# comma separated +# comma separated, case insensitive # names of plugins can be found in the plugin.xml # example: Fastpath,Jingle Client,Phone Client,Window Flashing Plugin # default is empty PLUGIN_BLACKLIST = # Disable Plugins by entrypoint Class -# Comma seperated +# Comma seperated, case sensitive # example org.jivesoftware.fastpath.FastpathPlugin +# default is empty PLUGIN_BLACKLIST_CLASS = diff --git a/src/java/org/jivesoftware/sparkimpl/plugin/transcripts/ChatTranscriptPlugin.java b/src/java/org/jivesoftware/sparkimpl/plugin/transcripts/ChatTranscriptPlugin.java index e2b6a78d..6c44be71 100644 --- a/src/java/org/jivesoftware/sparkimpl/plugin/transcripts/ChatTranscriptPlugin.java +++ b/src/java/org/jivesoftware/sparkimpl/plugin/transcripts/ChatTranscriptPlugin.java @@ -35,6 +35,7 @@ import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Comparator; import java.util.Date; import java.util.HashMap; @@ -341,10 +342,28 @@ public class ChatTranscriptPlugin implements ChatRoomListener { final TimerTask transcriptTask = new TimerTask() { public void run() { - final ChatTranscript transcript = (ChatTranscript)get(); + ChatTranscript transcript = (ChatTranscript)get(); + + // reduce the size of our transcript to the last 5000Messages + // This will prevent JavaOutOfHeap Errors + ArrayList toobig = (ArrayList) transcript.getMessage(null); + + // Get the Maximum size from settingsfile + int maxsize = SettingsManager.getLocalPreferences().getMaximumHistory(); + if (toobig.size() > maxsize) + { + transcript = new ChatTranscript(); + + for(int i = toobig.size()-1; i>=toobig.size()-maxsize;--i) + { + transcript.addHistoryMessage(toobig.get(i)); + } + } + final List list = transcript.getMessage( Res.getString("message.search.for.history").equals(searchField.getText()) ? null : searchField.getText()); + final String personalNickname = SparkManager.getUserManager().getNickname(); Date lastPost = null; diff --git a/src/java/org/jivesoftware/sparkimpl/plugin/transcripts/ChatTranscripts.java b/src/java/org/jivesoftware/sparkimpl/plugin/transcripts/ChatTranscripts.java index 5d83576e..ab5081b0 100644 --- a/src/java/org/jivesoftware/sparkimpl/plugin/transcripts/ChatTranscripts.java +++ b/src/java/org/jivesoftware/sparkimpl/plugin/transcripts/ChatTranscripts.java @@ -85,25 +85,31 @@ public final class ChatTranscripts { private static void writeToFile(File transcriptFile, Collection messages, boolean append) { final StringBuilder builder = new StringBuilder(); + + final String one = " "; + final String two = " "; + final String three = " "; // Handle new transcript file. if (!transcriptFile.exists() || !append) { - builder.append(""); + builder.append("\n"); + builder.append(one+"\n"); } for (HistoryMessage m : messages) { - builder.append(""); - builder.append("").append(m.getTo()).append(""); - builder.append("").append(m.getFrom()).append(""); - builder.append("").append(StringUtils.escapeForXML(m.getBody())).append(""); + builder.append(two+"\n"); + builder.append(three+"").append(m.getTo()).append("\n"); + builder.append(three+"").append(m.getFrom()).append("\n"); + builder.append(three+"").append(StringUtils.escapeForXML(m.getBody())).append("\n"); String dateString = FORMATTER.format(m.getDate()); - builder.append("").append(dateString).append(""); - builder.append(""); + builder.append(three+"").append(dateString).append("\n"); + builder.append(two+"\n"); } if (!transcriptFile.exists() || !append) { - builder.append(""); + builder.append(one+"\n"); + builder.append(""); } @@ -127,7 +133,7 @@ public final class ChatTranscripts { // We want to append near the end of the document as the last // child in the transcript. - final String endTag = ""; + final String endTag = " \n"; builder.append(endTag); raf.seek(transcriptFile.length() - endTag.length()); @@ -192,6 +198,7 @@ public final class ChatTranscripts { catch (Exception e) { e.printStackTrace(); } + return transcript; } diff --git a/src/java/org/jivesoftware/sparkimpl/settings/local/LocalPreferences.java b/src/java/org/jivesoftware/sparkimpl/settings/local/LocalPreferences.java index 4927d48d..809168e4 100644 --- a/src/java/org/jivesoftware/sparkimpl/settings/local/LocalPreferences.java +++ b/src/java/org/jivesoftware/sparkimpl/settings/local/LocalPreferences.java @@ -1049,6 +1049,20 @@ public class LocalPreferences { setBoolean("autoAcceptMucInvite", autoAcceptMuc); } + + /** + * Returns the Maximum visible amount of History entries + * Default is 5000 + * @return int + */ + public int getMaximumHistory() { + int x = getInt("maximumHistory", -1); + if (x == -1) { + x = 5000; + setInt("maximumHistory", x); + } + return x; + } } diff --git a/src/plugins/roar/src/java/org/jivesoftware/spark/roar/displaytype/TopRight.java b/src/plugins/roar/src/java/org/jivesoftware/spark/roar/displaytype/TopRight.java index 079f3d0a..3903fe1c 100644 --- a/src/plugins/roar/src/java/org/jivesoftware/spark/roar/displaytype/TopRight.java +++ b/src/plugins/roar/src/java/org/jivesoftware/spark/roar/displaytype/TopRight.java @@ -106,6 +106,11 @@ public class TopRight implements RoarDisplayType { } --_amount; + + if (_amount == 0) { + _lastusedXpos = _screensize.width - 5; + _lastusedYpos = 5; + } }