Skip to content
This repository has been archived by the owner on Jan 11, 2021. It is now read-only.

Commit

Permalink
Merge branch 'develop' of github.com:alexstyl/MementoNamedays into de…
Browse files Browse the repository at this point in the history
…velop

* 'develop' of github.com:alexstyl/MementoNamedays:
  Rename to fix issue with compilation
  Use proper parsing of date
  Use new ArrayList instead of using existing unmodifyable list
  Cover all test cases of PeoplEventsProvider
  Write test around PeopleEventsProvider
  Combine static events with dynamic if needed
  WIP: show static events on widget
  • Loading branch information
alexstyl committed Mar 8, 2017
2 parents f4c6eb6 + fabbc62 commit 5fff710
Show file tree
Hide file tree
Showing 29 changed files with 502 additions and 347 deletions.
2 changes: 1 addition & 1 deletion mobile/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@
</receiver>

<provider
android:name=".events.peopleevents.PeopleEventsContentProvider"
android:name=".events.peopleevents.StaticEventsContentProvider"
android:authorities="com.alexstyl.specialdates.peopleeventsprovider"
android:exported="false"
android:grantUriPermissions="true"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public List<AddEventContactEventViewModel> loadInBackground() {
private List<AddEventContactEventViewModel> createModelsFor(Contact contact) {
List<AddEventContactEventViewModel> existingViewModels;
List<ContactEvent> contactEvents = new ArrayList<>();
List<ContactEvent> contactEventsOnDate = peopleEventsProvider.getCelebrationDateFor(TimePeriod.aYearFromNow());
List<ContactEvent> contactEventsOnDate = peopleEventsProvider.getContactEventsFor(TimePeriod.aYearFromNow());
List<EventType> existingTypes = new ArrayList<>();
for (ContactEvent contactEvent : contactEventsOnDate) {
if (contactEvent.getContact().getContactID() == contact.getContactID() && isEditable(contactEvent)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ private int rawContactID(Contact contact) {

private List<ContactEvent> getAllDeviceEventsFor(Contact contact) {
List<ContactEvent> contactEvents = new ArrayList<>();
List<ContactEvent> contactEventsOnDate = peopleEventsProvider.getCelebrationDateFor(TimePeriod.aYearFromNow());
List<ContactEvent> contactEventsOnDate = peopleEventsProvider.getContactEventsFor(TimePeriod.aYearFromNow());
for (ContactEvent contactEvent : contactEventsOnDate) {
Contact dbContact = contactEvent.getContact();
if (dbContact.getContactID() == contact.getContactID() && contactEvent.getType() != StandardEventType.NAMEDAY) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ private AndroidContactsProvider(ContactCache<Contact> cache, DeviceContactFactor
this.deviceContactsQuery = deviceContactsQuery;
}

@Override
public Contact getOrCreateContact(long contactID) throws ContactNotFoundException {
Contact deviceContact = cache.getContact(contactID);
if (deviceContact == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,6 @@

public interface ContactsProvider {
List<Contact> fetchAllDeviceContacts();

Contact getOrCreateContact(long contactId) throws ContactNotFoundException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ protected void onHandleIntent(Intent intent) {
Date today = getDayDateToDisplay();

if (hasContactPermission()) {
List<ContactEvent> celebrationDate = provider.getCelebrationDateFor(TimePeriod.between(today, today));
List<ContactEvent> celebrationDate = provider.getContactEventsFor(TimePeriod.between(today, today));
if (containsAnyContactEvents(celebrationDate)) {
notifier.forDailyReminder(today, celebrationDate);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,4 +148,5 @@ public int hashCode() {
public String toString() {
return DateDisplayStringCreator.INSTANCE.stringOf(this);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,14 @@ public String stringOf(Date date) {
return str.toString();
}

public String stringOfNoYear(Date date) {
StringBuilder str = new StringBuilder();
addMonth(date, str);
str.append(SEPARATOR);
addDayOfMonth(date, str);
return str.toString();
}

private void addYear(Date date, StringBuilder str) {
if (date.hasYear()) {
str.append(date.getYear());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@
import com.alexstyl.specialdates.events.bankholidays.BankHoliday;
import com.alexstyl.specialdates.ui.MementoCardView;

public class BankHolidayCardView extends MementoCardView {
public class BankCardView extends MementoCardView {

private final TextView text;

public BankHolidayCardView(Context context, AttributeSet attrs) {
public BankCardView(Context context, AttributeSet attrs) {
super(context, attrs);

inflate(context, R.layout.merge_bankholidaycardview, this);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.alexstyl.specialdates.datedetails;

import android.support.v7.widget.RecyclerView;
import android.view.View;

import com.alexstyl.specialdates.events.bankholidays.BankHoliday;

class BankViewHolder extends RecyclerView.ViewHolder {

private final BankCardView bankCardView;

BankViewHolder(View itemView) {
super(itemView);
bankCardView = (BankCardView) itemView;
}

void bind(BankHoliday holiday) {
bankCardView.display(holiday);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType
}
if (viewType == VIEW_TYPE_BANKHOLIDAY) {
View view = layoutInflater.inflate(R.layout.card_bankholiday, parent, false);
return new BankHolidayCardViewHolder(view);
return new BankViewHolder(view);
}
throw new DeveloperError("Invalid viewType " + viewType);
}
Expand All @@ -190,7 +190,7 @@ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
ContactEvent event = getEvent(position);
((DateDetailsViewHolder) holder).bind(event, dateToDisplay, contactCardListener);
} else if (type == VIEW_TYPE_BANKHOLIDAY) {
((BankHolidayCardViewHolder) holder).bind(bankholiday.get());
((BankViewHolder) holder).bind(bankholiday.get());
} else {
throw new DeveloperError("Invalid type : " + type);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@
import java.util.Collections;
import java.util.List;

public class ContactEvents {
public class ContactEventsOnADate {

private final Date date;
private final List<ContactEvent> contactEventList;
private final List<Contact> contacts;

public static ContactEvents createFrom(Date date, List<ContactEvent> contactEvent) {
public static ContactEventsOnADate createFrom(Date date, List<ContactEvent> contactEvent) {
List<Contact> contacts = getContactsIn(contactEvent);
return new ContactEvents(date, contactEvent, contacts);
return new ContactEventsOnADate(date, contactEvent, contacts);
}

private static List<Contact> getContactsIn(List<ContactEvent> contactEvent) {
Expand All @@ -30,7 +30,7 @@ private static List<Contact> getContactsIn(List<ContactEvent> contactEvent) {
return Collections.unmodifiableList(contacts);
}

private ContactEvents(Date date, List<ContactEvent> contactEventList, List<Contact> contacts) {
private ContactEventsOnADate(Date date, List<ContactEvent> contactEventList, List<Contact> contacts) {
this.date = date;
this.contactEventList = contactEventList;
this.contacts = contacts;
Expand All @@ -49,10 +49,10 @@ public Date getDate() {
}

public List<Contact> getContacts() {
return Collections.unmodifiableList(contacts);
return contacts;
}

public int getContactCount() {
return contacts.size();
public List<ContactEvent> getEvents() {
return contactEventList;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,34 @@
import com.alexstyl.specialdates.DisplayName;
import com.alexstyl.specialdates.Optional;
import com.alexstyl.specialdates.contact.Contact;
import com.alexstyl.specialdates.contact.AndroidContactsProvider;
import com.alexstyl.specialdates.contact.ContactsProvider;
import com.alexstyl.specialdates.date.ContactEvent;
import com.alexstyl.specialdates.date.Date;
import com.alexstyl.specialdates.date.TimePeriod;
import com.alexstyl.specialdates.events.namedays.NameCelebrations;
import com.alexstyl.specialdates.events.namedays.NamedayLocale;
import com.alexstyl.specialdates.events.namedays.NamedayPreferences;
import com.alexstyl.specialdates.events.namedays.calendar.NamedayCalendar;
import com.alexstyl.specialdates.events.namedays.calendar.resource.NamedayCalendarProvider;
import com.alexstyl.specialdates.date.TimePeriod;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;

public final class PeopleNamedaysCalculator {
public class PeopleNamedaysCalculator {

private static final Optional<Long> NO_DEVICE_EVENT_ID = Optional.absent();

private final NamedayPreferences namedayPreferences;
private final NamedayCalendarProvider namedayCalendarProvider;
private final AndroidContactsProvider contactsProvider;
private final ContactsProvider contactsProvider;

public PeopleNamedaysCalculator(NamedayPreferences namedayPreferences,
NamedayCalendarProvider namedayCalendarProvider,
AndroidContactsProvider contactsProvider) {
public PeopleNamedaysCalculator(
NamedayPreferences namedayPreferences,
NamedayCalendarProvider namedayCalendarProvider,
ContactsProvider contactsProvider
) {
this.namedayPreferences = namedayPreferences;
this.namedayCalendarProvider = namedayCalendarProvider;
this.contactsProvider = contactsProvider;
Expand Down Expand Up @@ -59,6 +63,10 @@ public List<ContactEvent> loadDeviceStaticNamedays() {
return namedayEvents;
}

public List<ContactEvent> loadSpecialNamedaysOn(Date date) {
return loadSpecialNamedaysBetween(TimePeriod.between(date, date));
}

public List<ContactEvent> loadSpecialNamedaysBetween(TimePeriod timeDuration) {
List<ContactEvent> namedayEvents = new ArrayList<>();
for (Contact contact : contactsProvider.fetchAllDeviceContacts()) {
Expand All @@ -78,7 +86,7 @@ public List<ContactEvent> loadSpecialNamedaysBetween(TimePeriod timeDuration) {
}
}
}
return namedayEvents;
return Collections.unmodifiableList(namedayEvents);
}

private NameCelebrations getNamedaysOf(String given) {
Expand All @@ -91,7 +99,7 @@ private NameCelebrations getSpecialNamedaysOf(String firstName) {
return namedayCalendar.getSpecialNamedaysFor(firstName);
}

public NamedayCalendar getNamedayCalendar() {
private NamedayCalendar getNamedayCalendar() {
NamedayLocale locale = namedayPreferences.getSelectedLanguage();
return namedayCalendarProvider.loadNamedayCalendarForLocale(locale, Date.CURRENT_YEAR);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import com.alexstyl.specialdates.util.DateParser;
import com.novoda.notils.exception.DeveloperError;

public class PeopleEventsContentProvider extends ContentProvider {
public class StaticEventsContentProvider extends ContentProvider {

private static final int CODE_PEOPLE_EVENTS = 10;
private EventSQLiteOpenHelper eventSQLHelper;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ List<ContactWithEvents> searchForContacts(String searchQuery, int counter) {
searchQuery = searchQuery.trim();
HashMapList<Contact, ContactEvent> events = new HashMapList<>();
TimePeriod between = TimePeriod.aYearFromNow();
List<ContactEvent> contactEventsOnDate = peopleEventsProvider.getCelebrationDateFor(between);
List<ContactEvent> contactEventsOnDate = peopleEventsProvider.getContactEventsFor(between);
int size = 0;
for (ContactEvent contactEvent : contactEventsOnDate) {
Contact contact = contactEvent.getContact();
Expand Down
Loading

0 comments on commit 5fff710

Please sign in to comment.