private boolean includeInBackup(DataType type, Iterable<PersonRecord> records) { for (PersonRecord r : records) { if (includePersonInBackup(r, type)) { return true; } } return false; }
@Override public boolean removeEldestEntry(Map.Entry<String, PersonRecord> eldest) { return size() > MAX_PEOPLE_CACHE_SIZE; } };
@Override public String toString() { return "BackupImapStore{" + "uri=" + getStoreUriForLogging() + '}'; }
public @NonNull ConversionResult convertMessages(final Cursor cursor, DataType dataType) throws MessagingException { final Map<String, String> msgMap = getMessageMap(cursor); final Message m = messageGenerator.messageForDataType(msgMap, dataType); final ConversionResult result = new ConversionResult(dataType); if (m != null) { m.setFlag(Flag.SEEN, markAsSeen(dataType, msgMap)); result.add(m, msgMap); } return result; }
@Test public void testShouldGenerateMMSMessageWithCorrectEncoding() throws Exception { PersonRecord personRecord = new PersonRecord(1, "Foo Bar", "foo@bar.com", "1234"); MmsSupport.MmsDetails details = new MmsSupport.MmsDetails(true, "foo", personRecord, new Address("foo@bar.com")); when(mmsSupport.getDetails(any(Uri.class), any(AddressStyle.class))).thenReturn(details); Message msg = generator.messageForDataType(mockMessage("1234", personRecord), DataType.MMS); assertThat(msg.getHeader(MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING)).isEqualTo(new String[] { MimeUtil.ENC_7BIT }); }
@Test public void testShouldGenerateMessageForCallLogIncoming() throws Exception { PersonRecord record = new PersonRecord(-1, "Test Testor", null, null); Message message = generator.messageForDataType(mockCalllogMessage("1234", INCOMING_TYPE, record), CALLLOG); assertMessage(message); }
@Test public void testMessageToContentValuesWithCalllogFromUnknownPerson() throws Exception { PersonRecord record = new PersonRecord(-1, null, null, null); when(personLookup.lookupPerson("+12121")).thenReturn(record); final ContentValues values = messageConverter.messageToContentValues(createCallLogMessage()); assertThat(values.containsKey(CallLog.Calls.CACHED_NAME)).isFalse(); assertThat(values.containsKey(CallLog.Calls.CACHED_NUMBER_TYPE)).isFalse(); }
@Test public void testShouldGenerateSMSMessageWithCorrectEncoding() throws Exception { PersonRecord record = new PersonRecord(1, "Test Testor", null, null); Message msg = generator.messageForDataType(mockMessage("1234", record), DataType.SMS); assertThat(msg.getHeader(MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING)).isEqualTo(new String[] { MimeUtil.ENC_QUOTED_PRINTABLE }); }
@Test public void testShouldGenerateCallLogMessageWithCorrectEncoding() throws Exception { PersonRecord record = new PersonRecord(-1, "Test Testor", null, null); Message msg = generator.messageForDataType(mockCalllogMessage("1234", OUTGOING_TYPE, record), CALLLOG); assertThat(msg.getHeader(MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING)).isEqualTo(new String[] { MimeUtil.ENC_QUOTED_PRINTABLE }); }
public String format(int callType, String number, int duration) { final StringBuilder text = new StringBuilder(); if (callType != CallLog.Calls.MISSED_TYPE && callType != CallLog.Calls.REJECTED_TYPE) { text.append(duration) .append("s") .append(" (").append(formattedCallDuration(duration)).append(")") .append("\n"); } text.append(number) .append(" (").append(callTypeString(callType, null)).append(")"); return text.toString(); }
public @Nullable Message messageForDataType(Map<String, String> msgMap, DataType dataType) throws MessagingException { switch (dataType) { case SMS: return messageFromMapSms(msgMap); case MMS: return messageFromMapMms(msgMap); case CALLLOG: return messageFromMapCallLog(msgMap); default: return null; } }
public DataType getDataType(Message message) throws MessagingException { final String dataTypeHeader = Headers.get(message, Headers.DATATYPE); if (dataTypeHeader == null) { throw new MessagingException("Datatype header is missing"); } try { return DataType.valueOf(dataTypeHeader.toUpperCase(Locale.ENGLISH)); } catch (IllegalArgumentException e) { throw new MessagingException("Invalid header: "+dataTypeHeader, e); } }
public boolean isFirstBackup() { for (DataType type : DataType.values()) { if (preferences.contains(type.maxSyncedPreference)) { return false; } } return true; }
public String getEmail() { return isEmailUnknown() ? getUnknownEmail(number) : email; }
static MimeBodyPart createPartFromUri(@NonNull ContentResolver resolver, @NonNull Uri uri, String filename, String contentType) throws MessagingException { return createPart(new ResolverBody(resolver, uri), filename, contentType); }
public String callTypeString(int callType, String name) { if (name == null) { return resources.getString(mapCallType(callType)); } else { return resources.getString(mapTextCallType(callType), name); } }
static String encodeRFC2231(String key, String value) { StringBuilder buf = new StringBuilder(); boolean encoded = encodeRFC2231value(value, buf); if (encoded) { return "; " + key + "*=" + buf.toString(); } else { return "; " + key + "=" + value; } }
@Test public void testShouldGenerateMessageForCallLogMissed() throws Exception { PersonRecord record = new PersonRecord(-1, "Test Testor", null, null); Message message = generator.messageForDataType(mockCalllogMessage("1234", MISSED_TYPE, record), CALLLOG); assertMessage(message); }
@Test public void shouldGenerateCorrectFromHeaderWithUsersEmailAddress() throws Exception { PersonRecord record = new PersonRecord(1, "Test Testor", "test@test.com", "1234"); Message msg = generator.messageForDataType(mockMessage("1234", record), DataType.SMS); assertThat(msg).isNotNull(); assertThat(msg.getFrom()[0]).isEqualTo(me); }
public void registerDataTypeListener(DataTypeListener listener) { this.listener = listener; if (listener != null) { for (DataType type : DataType.values()) { listener.onChanged(type, this); } } }