OPENDJ-1116 Introduce abstraction for the changelog DB
Leveraged the ReplicaDBCursor interface to hide iterations cross replica DBs from client code.
Net benefit: more coherent code + reduced coupling between changelogDB and ECL code.
There is an added benefit: searching on cn=changelog now returns changes in order.
The change was implemented by moving code from MessageHandler to JEChangelogDB.
MessageHandler.java:
Removed nextOldestUpdateMsg(), addCursorIfNotEmpty() and collectAllCursorsWithChanges().
Extracted method isLateQueueBelowThreshold().
ReplicationServerDomain.java
Removed getServerIds() and getCursorFrom(int, CSN)
Added getCursorFrom(CSN) and getCursorFrom(ServerState).
ReplicationDomainDB.java:
Removed getDomainServerIds() and getCursorFrom(DN, int, CSN)
Added getCursorFrom(DN, CSN) and getCursorFrom(DN, ServerState).
JEChangelogDB.java
Added inenr class CrossReplicaDBCursor + moved getCursorFrom(DN, int, CSN) here from enclosing type.
Removed getDomainServerIds().
Added getCursorFrom(DN, CSN) and getCursorFrom(DN, ServerState).
ReplicationBackend.java:
In writeChangesAfterCSN(), removed loop on the serverIds + renamed "rsd" to "rsDomain".
JEReplicaDB.java, JEReplicaDBCursor.java:
Implemented toString().