Commit 8f26268b authored by Dave Cridland's avatar Dave Cridland

Merge pull request #458 from guusdk/OF-856

OF-856: Cherry Picking of linuschien solution
parents c0c1eaa7 45fa9970
...@@ -95,7 +95,6 @@ public class JdbcPersistenceManager implements PersistenceManager { ...@@ -95,7 +95,6 @@ public class JdbcPersistenceManager implements PersistenceManager {
public static final String CONVERSATION_WITH_JID = "ofMessageArchive.toJID"; public static final String CONVERSATION_WITH_JID = "ofMessageArchive.toJID";
// public static final String CONVERSATION_WITH_JID = "c.withJid"; // public static final String CONVERSATION_WITH_JID = "c.withJid";
public static final String MESSAGE_ID = "ofMessageArchive.messageID"; public static final String MESSAGE_ID = "ofMessageArchive.messageID";
public static final String MESSAGE_SENT_DATE = "ofMessageArchive.sentDate"; public static final String MESSAGE_SENT_DATE = "ofMessageArchive.sentDate";
...@@ -126,7 +125,6 @@ public class JdbcPersistenceManager implements PersistenceManager { ...@@ -126,7 +125,6 @@ public class JdbcPersistenceManager implements PersistenceManager {
// public static final String SELECT_PARTICIPANTS_BY_CONVERSATION = // public static final String SELECT_PARTICIPANTS_BY_CONVERSATION =
// "SELECT participantId,startTime,endTime,jid FROM archiveParticipants WHERE conversationId =? ORDER BY startTime"; // "SELECT participantId,startTime,endTime,jid FROM archiveParticipants WHERE conversationId =? ORDER BY startTime";
public static final String SELECT_MESSAGES = "SELECT DISTINCT " + "ofMessageArchive.fromJID, " public static final String SELECT_MESSAGES = "SELECT DISTINCT " + "ofMessageArchive.fromJID, "
+ "ofMessageArchive.toJID, " + "ofMessageArchive.sentDate, " + "ofMessageArchive.stanza, " + "ofMessageArchive.toJID, " + "ofMessageArchive.sentDate, " + "ofMessageArchive.stanza, "
+ "ofMessageArchive.messageID, " + "ofConParticipant.bareJID " + "ofMessageArchive.messageID, " + "ofConParticipant.bareJID "
...@@ -168,7 +166,7 @@ public class JdbcPersistenceManager implements PersistenceManager { ...@@ -168,7 +166,7 @@ public class JdbcPersistenceManager implements PersistenceManager {
public Date getAuditedStartDate(Date startDate) { public Date getAuditedStartDate(Date startDate) {
long maxRetrievable = JiveGlobals.getIntProperty("conversation.maxRetrievable", ConversationManager.DEFAULT_MAX_RETRIEVABLE) long maxRetrievable = JiveGlobals.getIntProperty("conversation.maxRetrievable", ConversationManager.DEFAULT_MAX_RETRIEVABLE)
* JiveConstants.DAY; * JiveConstants.DAY;
Date result; Date result = startDate;
if (maxRetrievable > 0) { if (maxRetrievable > 0) {
Date now = new Date(); Date now = new Date();
Date maxRetrievableDate = new Date(now.getTime() - maxRetrievable); Date maxRetrievableDate = new Date(now.getTime() - maxRetrievable);
...@@ -176,11 +174,7 @@ public class JdbcPersistenceManager implements PersistenceManager { ...@@ -176,11 +174,7 @@ public class JdbcPersistenceManager implements PersistenceManager {
result = maxRetrievableDate; result = maxRetrievableDate;
} else if (startDate.before(maxRetrievableDate)) { } else if (startDate.before(maxRetrievableDate)) {
result = maxRetrievableDate; result = maxRetrievableDate;
} else {
result = startDate;
} }
}else{
result = startDate;
} }
return result; return result;
} }
...@@ -887,5 +881,4 @@ public class JdbcPersistenceManager implements PersistenceManager { ...@@ -887,5 +881,4 @@ public class JdbcPersistenceManager implements PersistenceManager {
return false; return false;
} }
} }
...@@ -75,8 +75,12 @@ public class IQRetrieveHandler extends AbstractIQHandler { ...@@ -75,8 +75,12 @@ public class IQRetrieveHandler extends AbstractIQHandler {
final List<ArchivedMessage> messages = conversation.getMessages() final List<ArchivedMessage> messages = conversation.getMessages()
.subList(fromIndex, toIndex); .subList(fromIndex, toIndex);
for (ArchivedMessage message : messages) { for (int i = 0; i < messages.size(); i++) {
addMessageElement(chatElement, conversation, message); if (i == 0) {
addMessageElement(chatElement, conversation, messages.get(i), null);
} else {
addMessageElement(chatElement, conversation, messages.get(i), messages.get(i - 1));
}
} }
if (resultSet != null) { if (resultSet != null) {
...@@ -98,11 +102,16 @@ public class IQRetrieveHandler extends AbstractIQHandler { ...@@ -98,11 +102,16 @@ public class IQRetrieveHandler extends AbstractIQHandler {
} }
private Element addMessageElement(Element parentElement, private Element addMessageElement(Element parentElement,
Conversation conversation, ArchivedMessage message) { Conversation conversation, ArchivedMessage message, ArchivedMessage previousMessage) {
final Element messageElement; final Element messageElement;
final long secs;
final long secs;
if (previousMessage == null) {
secs = (message.getTime().getTime() - conversation.getStart().getTime()) / 1000; secs = (message.getTime().getTime() - conversation.getStart().getTime()) / 1000;
} else {
secs = (message.getTime().getTime() - previousMessage.getTime().getTime()) / 1000;
}
messageElement = parentElement.addElement(message.getDirection() messageElement = parentElement.addElement(message.getDirection()
.toString()); .toString());
messageElement.addAttribute("secs", Long.toString(secs)); messageElement.addAttribute("secs", Long.toString(secs));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment