Skip to content
Snippets Groups Projects
Commit e9c19dce authored by Andrew Cheng's avatar Andrew Cheng
Browse files

mapclient: add builder to MessagesFilter

Bug: 322217798
Bug: 288895550
Test: atest MessagesFilterTest
Test: atest MapClientStateMachineTest
Flag: EXEMPT, no change in logic
Change-Id: I077a45c1f7137d1c48b762b4a76b65fd167bd6db
parent a0fb1c0c
No related branches found
No related tags found
No related merge requests found
......@@ -725,21 +725,30 @@ class MceStateMachine extends StateMachine {
case MSG_GET_MESSAGE_LISTING:
// Get latest 50 Unread messages in the last week
MessagesFilter filter = new MessagesFilter();
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -7);
byte messageType;
if (Utils.isPtsTestMode()) {
filter.setMessageType(
messageType =
(byte)
SystemProperties.getInt(
FETCH_MESSAGE_TYPE,
MessagesFilter.MESSAGE_TYPE_ALL));
MessagesFilter.MESSAGE_TYPE_ALL);
} else {
filter.setMessageType(MessagesFilter.MESSAGE_TYPE_ALL);
messageType = MessagesFilter.MESSAGE_TYPE_ALL;
}
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -7);
filter.setPeriod(calendar.getTime(), null);
mMasClient.makeRequest(new RequestGetMessagesListing(
(String) message.obj, 0, filter, 0, 50, 0));
mMasClient.makeRequest(
new RequestGetMessagesListing(
(String) message.obj,
0,
new MessagesFilter.Builder()
.setPeriod(calendar.getTime(), null)
.setMessageType(messageType)
.build(),
0,
50,
0));
break;
case MSG_SET_MESSAGE_STATUS:
......
......@@ -41,6 +41,16 @@ public final class MessagesFilter {
public MessagesFilter() {
}
public MessagesFilter(MessagesFilter filter) {
this.messageType = filter.messageType;
this.periodBegin = filter.periodBegin;
this.periodEnd = filter.periodEnd;
this.readStatus = filter.readStatus;
this.recipient = filter.recipient;
this.originator = filter.originator;
this.priority = filter.priority;
}
public void setMessageType(byte filter) {
messageType = filter;
}
......@@ -78,4 +88,87 @@ public final class MessagesFilter {
public void setPriority(byte filter) {
priority = filter;
}
/** Builder for a {@link MessagesFilter}. */
public static class Builder {
private MessagesFilter mMessagesFilter = new MessagesFilter();
/**
* Sets the `Message Type` field of the filter.
*
* @param messageType to filter on.
* @return This {@link Builder} object.
*/
public Builder setMessageType(byte messageType) {
mMessagesFilter.setMessageType(messageType);
return this;
}
/**
* Sets the `Originator` field of the filter.
*
* @param originator to filter on.
* @return This {@link Builder} object.
*/
public Builder setOriginator(String originator) {
mMessagesFilter.setOriginator(originator);
return this;
}
/**
* Sets the `Period` field of the filter.
*
* @param filterBegin filter out messages that arrive before this time instance. Can be
* {@code null}, in which case no limit on how old a message can be.
* @param filterEnd filter out messages that arrive after this time instance. Can be {@code
* null}, in which case no limit on how new a message can be.
* @return This {@link Builder} object.
*/
public Builder setPeriod(Date filterBegin, Date filterEnd) {
mMessagesFilter.setPeriod(filterBegin, filterEnd);
return this;
}
/**
* Sets the `Priority` field of the filter.
*
* @param priority to filter on.
* @return This {@link Builder} object.
*/
public Builder setPriority(byte priority) {
mMessagesFilter.setPriority(priority);
return this;
}
/**
* Sets the `Read Status` field of the filter.
*
* @param status to filter on.
* @return This {@link Builder} object.
*/
public Builder setReadStatus(byte status) {
mMessagesFilter.setReadStatus(status);
return this;
}
/**
* Sets the `Recipient` field of the filter.
*
* @param recipient to filter on.
* @return This {@link Builder} object.
*/
public Builder setRecipient(String recipient) {
mMessagesFilter.setRecipient(recipient);
return this;
}
/**
* Build the {@link MessagesFilter}.
*
* @return A {@link MessagesFilter} object.
*/
public MessagesFilter build() {
return new MessagesFilter(mMessagesFilter);
}
}
}
......@@ -21,6 +21,8 @@ import static com.google.common.truth.Truth.assertThat;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
import java.util.Calendar;
import org.junit.Test;
import org.junit.runner.RunWith;
......@@ -78,4 +80,35 @@ public class MessagesFilterTest {
assertThat(filter.recipient).isEqualTo(null);
}
/** Test Builder creates and sets everything correctly. */
@Test
public void testBuilder() {
String originator = "test_originator";
String recipient = "test_recipient";
byte messageType = MessagesFilter.MESSAGE_TYPE_EMAIL;
byte readStatus = MessagesFilter.READ_STATUS_READ;
byte priority = MessagesFilter.PRIORITY_HIGH;
Calendar begin = Calendar.getInstance();
begin.add(Calendar.DATE, -14);
Calendar end = Calendar.getInstance();
end.add(Calendar.DATE, -7);
MessagesFilter filter =
new MessagesFilter.Builder()
.setOriginator(originator)
.setRecipient(recipient)
.setMessageType(messageType)
.setReadStatus(readStatus)
.setPriority(priority)
.setPeriod(begin.getTime(), end.getTime())
.build();
assertThat(filter.originator).isEqualTo(originator);
assertThat(filter.recipient).isEqualTo(recipient);
assertThat(filter.messageType).isEqualTo(messageType);
assertThat(filter.readStatus).isEqualTo(readStatus);
assertThat(filter.priority).isEqualTo(priority);
assertThat(filter.periodBegin).isEqualTo((new ObexTime(begin.getTime())).toString());
assertThat(filter.periodEnd).isEqualTo((new ObexTime(end.getTime())).toString());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment