From 495b854bf2d8b52638bad5ba7e442c661bf2d59e Mon Sep 17 00:00:00 2001 From: rfc2822 Date: Sat, 5 Oct 2013 13:34:03 +0200 Subject: [PATCH] Refactoring * move common code to super-classes * new icons --- ic_launcher-web.png | Bin 131768 -> 0 bytes res/drawable-hdpi/ic_launcher.png | Bin 6142 -> 5050 bytes res/drawable-mdpi/ic_launcher.png | Bin 3646 -> 3056 bytes res/drawable-xhdpi/ic_launcher.png | Bin 9165 -> 7252 bytes res/drawable-xxhdpi/ic_launcher.png | Bin 13541 -> 12118 bytes .../davdroid/resource/CalDavCalendar.java | 60 +--- .../davdroid/resource/CardDavAddressBook.java | 58 +--- src/at/bitfire/davdroid/resource/Contact.java | 3 - src/at/bitfire/davdroid/resource/Event.java | 3 +- .../davdroid/resource/LocalAddressBook.java | 265 ++++++------------ .../davdroid/resource/LocalCalendar.java | 225 +++++---------- .../davdroid/resource/LocalCollection.java | 188 +++++++++++-- .../davdroid/resource/RemoteCollection.java | 57 +++- .../bitfire/davdroid/resource/Resource.java | 2 + .../davdroid/syncadapter/SyncManager.java | 2 +- .../bitfire/davdroid/test/CalendarTest.java | 11 +- .../at/bitfire/davdroid/test/ContactTest.java | 7 + 17 files changed, 396 insertions(+), 485 deletions(-) delete mode 100644 ic_launcher-web.png diff --git a/ic_launcher-web.png b/ic_launcher-web.png deleted file mode 100644 index 3829538fcd2b831d96d3a005242ba05642cdf6c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131768 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 EfAq+xYybcN diff --git a/res/drawable-hdpi/ic_launcher.png b/res/drawable-hdpi/ic_launcher.png index 7b55798e39f1589c91f9e08d775fd6af44234b00..571db10cfe83785a9b816ad40c16a9d5dca9c2c5 100644 GIT binary patch literal 5050 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 QJpcdz07*qoM6N<$f}GfI8~^|S literal 6142 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 O0000 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 XGCD9Yd}STb00000NkvXXu0mjfE6Stl diff --git a/res/drawable-xxhdpi/ic_launcher.png b/res/drawable-xxhdpi/ic_launcher.png index 45ef706e59a415408d6dcccfa67dc914bb730d22..761a116dead120a0540c03dbe5cdffd71d17e08f 100644 GIT binary patch literal 12118 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 }f*iltyB3p655C8xhI4XN&0}ijY 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 b05cOe^ZyEXn-WZa2>>KT { //private final static String TAG = "davdroid.CalDavCalendar"; - public CalDavCalendar(String baseURL, String user, String password) throws IOException { - try { - collection = new WebDavCollection(new URI(baseURL), user, password); - } catch (URISyntaxException e) { - throw new IOException(); - } - } - - @Override protected String memberContentType() { return "text/calendar"; } + + @Override + protected MultigetType multiGetType() { + return MultigetType.CALENDAR; + } - @Override - public Event[] getMemberETags() throws IOException, IncapableResourceException, HttpException { - super.getMemberETags(); - - LinkedList resources = new LinkedList(); - for (WebDavResource member : collection.getMembers()) { - Event e = new Event(member.getName(), member.getETag()); - resources.add(e); - } - return resources.toArray(new Event[0]); + protected Event newResourceSkeleton(String name, String ETag) { + return new Event(name, ETag); } - - @Override - public Event[] multiGet(Resource[] resources) throws IOException, IncapableResourceException, HttpException, ParserException { - if (resources.length == 1) - return new Event[] { (Event)get(resources[0]) }; - - LinkedList names = new LinkedList(); - for (Resource c : resources) - names.add(c.getName()); - - collection.multiGet(names.toArray(new String[0]), MultigetType.CALENDAR); - - LinkedList foundEvents = new LinkedList(); - for (WebDavResource member : collection.getMembers()) { - Event e = new Event(member.getName(), member.getETag()); - e.parseEntity(member.getContent()); - foundEvents.add(e); - } - return foundEvents.toArray(new Event[0]); + + + public CalDavCalendar(String baseURL, String user, String password) throws IOException, URISyntaxException { + super(baseURL, user, password); } - } diff --git a/src/at/bitfire/davdroid/resource/CardDavAddressBook.java b/src/at/bitfire/davdroid/resource/CardDavAddressBook.java index b1c971ab..87096a25 100644 --- a/src/at/bitfire/davdroid/resource/CardDavAddressBook.java +++ b/src/at/bitfire/davdroid/resource/CardDavAddressBook.java @@ -8,70 +8,30 @@ package at.bitfire.davdroid.resource; import java.io.IOException; -import java.net.URI; import java.net.URISyntaxException; -import java.util.LinkedList; -import net.fortuna.ical4j.data.ParserException; - -import org.apache.http.HttpException; - -import at.bitfire.davdroid.webdav.WebDavCollection; import at.bitfire.davdroid.webdav.WebDavCollection.MultigetType; -import at.bitfire.davdroid.webdav.WebDavResource; -public class CardDavAddressBook extends RemoteCollection { +public class CardDavAddressBook extends RemoteCollection { //private final static String TAG = "davdroid.CardDavAddressBook"; - public CardDavAddressBook(String baseURL, String user, String password) throws IOException { - try { - collection = new WebDavCollection(new URI(baseURL), user, password); - } catch (URISyntaxException e) { - throw new IOException(); - } - } - @Override protected String memberContentType() { return "text/vcard"; } @Override - public Contact[] getMemberETags() throws IOException, IncapableResourceException, HttpException { - super.getMemberETags(); - - LinkedList resources = new LinkedList(); - for (WebDavResource member : collection.getMembers()) { - Contact c = new Contact(member.getName(), member.getETag()); - resources.add(c); - } - - return resources.toArray(new Contact[0]); + protected MultigetType multiGetType() { + return MultigetType.ADDRESS_BOOK; } @Override - public Contact[] multiGet(Resource[] resources) throws IOException, IncapableResourceException, HttpException, ParserException { - if (resources.length == 1) { - Resource resource = get(resources[0]); - if (resource != null) - return new Contact[] { (Contact)resource }; - else - return null; - } - - LinkedList names = new LinkedList(); - for (Resource c : resources) - names.add(c.getName()); - - collection.multiGet(names.toArray(new String[0]), MultigetType.ADDRESS_BOOK); - - LinkedList foundContacts = new LinkedList(); - for (WebDavResource member : collection.getMembers()) { - Contact c = new Contact(member.getName(), member.getETag()); - c.parseEntity(member.getContent()); - foundContacts.add(c); - } - return foundContacts.toArray(new Contact[0]); + protected Contact newResourceSkeleton(String name, String ETag) { + return new Contact(name, ETag); } + + public CardDavAddressBook(String baseURL, String user, String password) throws IOException, URISyntaxException { + super(baseURL, user, password); + } } diff --git a/src/at/bitfire/davdroid/resource/Contact.java b/src/at/bitfire/davdroid/resource/Contact.java index 470447fa..f5d0c832 100644 --- a/src/at/bitfire/davdroid/resource/Contact.java +++ b/src/at/bitfire/davdroid/resource/Contact.java @@ -34,9 +34,6 @@ import ezvcard.types.UrlType; public class Contact extends Resource { public final String VCARD_STARRED = "X-DAVDROID-STARRED"; - @Getter @Setter private String uid; - - // VCard data @Getter @Setter boolean starred; @Getter @Setter private String displayName; diff --git a/src/at/bitfire/davdroid/resource/Event.java b/src/at/bitfire/davdroid/resource/Event.java index 49a885bd..d48c6d6d 100644 --- a/src/at/bitfire/davdroid/resource/Event.java +++ b/src/at/bitfire/davdroid/resource/Event.java @@ -15,7 +15,6 @@ import java.util.List; import java.util.SimpleTimeZone; import java.util.TimeZone; -import ezvcard.types.PhotoType; import lombok.Getter; import lombok.Setter; import net.fortuna.ical4j.data.CalendarBuilder; @@ -56,7 +55,7 @@ public class Event extends Resource { private TimeZoneRegistry tzRegistry; - @Getter @Setter private String uid, summary, location, description; + @Getter @Setter private String summary, location, description; @Getter private DtStart dtStart; @Getter private DtEnd dtEnd; diff --git a/src/at/bitfire/davdroid/resource/LocalAddressBook.java b/src/at/bitfire/davdroid/resource/LocalAddressBook.java index 361f5fd2..3e2096e4 100644 --- a/src/at/bitfire/davdroid/resource/LocalAddressBook.java +++ b/src/at/bitfire/davdroid/resource/LocalAddressBook.java @@ -7,10 +7,7 @@ ******************************************************************************/ package at.bitfire.davdroid.resource; -import java.util.LinkedList; -import java.util.List; import java.util.Set; -import java.util.UUID; import android.accounts.Account; import android.accounts.AccountManager; @@ -19,12 +16,8 @@ import android.content.ContentProviderOperation; import android.content.ContentProviderOperation.Builder; import android.content.ContentUris; import android.database.Cursor; -import android.database.DatabaseUtils; import android.net.Uri; import android.os.RemoteException; -import android.provider.CalendarContract; -import android.provider.ContactsContract; -import android.provider.CalendarContract.Events; import android.provider.ContactsContract.CommonDataKinds.Email; import android.provider.ContactsContract.CommonDataKinds.Nickname; import android.provider.ContactsContract.CommonDataKinds.Note; @@ -35,9 +28,6 @@ import android.provider.ContactsContract.CommonDataKinds.Website; import android.provider.ContactsContract.Data; import android.provider.ContactsContract.RawContacts; import at.bitfire.davdroid.Constants; - -import com.google.common.base.Joiner; - import ezvcard.parameters.EmailTypeParameter; import ezvcard.parameters.ImageTypeParameter; import ezvcard.parameters.TelephoneTypeParameter; @@ -48,15 +38,31 @@ import ezvcard.types.PhotoType; import ezvcard.types.TelephoneType; import ezvcard.types.UrlType; -public class LocalAddressBook extends LocalCollection { +public class LocalAddressBook extends LocalCollection { //private final static String TAG = "davdroid.LocalAddressBook"; - - protected final static String - COLUMN_REMOTE_NAME = RawContacts.SOURCE_ID, - COLUMN_UID = RawContacts.SYNC1, - COLUMN_ETAG = RawContacts.SYNC2; protected AccountManager accountManager; + + + /* database fields */ + + @Override + protected Uri entriesURI() { + return syncAdapterURI(RawContacts.CONTENT_URI); + } + + protected String entryColumnAccountType() { return RawContacts.ACCOUNT_TYPE; } + protected String entryColumnAccountName() { return RawContacts.ACCOUNT_NAME; } + + protected String entryColumnID() { return RawContacts._ID; } + protected String entryColumnRemoteName() { return RawContacts.SOURCE_ID; } + protected String entryColumnETag() { return RawContacts.SYNC2; } + + protected String entryColumnDirty() { return RawContacts.DIRTY; } + protected String entryColumnDeleted() { return RawContacts.DELETED; } + + protected String entryColumnUID() { return RawContacts.SYNC1; } + public LocalAddressBook(Account account, ContentProviderClient providerClient, AccountManager accountManager) { @@ -65,55 +71,7 @@ public class LocalAddressBook extends LocalCollection { } - /* find multiple rows */ - - @Override - public Contact[] findDeleted() throws RemoteException { - Cursor cursor = providerClient.query(entriesURI(), - new String[] { RawContacts._ID, COLUMN_REMOTE_NAME, COLUMN_ETAG }, - RawContacts.DELETED + "=1", null, null); - LinkedList contacts = new LinkedList(); - while (cursor.moveToNext()) - contacts.add(new Contact(cursor.getLong(0), cursor.getString(1), cursor.getString(2))); - return contacts.toArray(new Contact[0]); - } - - @Override - public Contact[] findDirty() throws RemoteException { - Cursor cursor = providerClient.query(entriesURI(), - new String[] { RawContacts._ID, COLUMN_REMOTE_NAME, COLUMN_ETAG }, - RawContacts.DIRTY + "=1", null, null); - LinkedList contacts = new LinkedList(); - while (cursor.moveToNext()) { - Contact c = new Contact(cursor.getLong(0), cursor.getString(1), cursor.getString(2)); - populate(c); - contacts.add(c); - } - return contacts.toArray(new Contact[0]); - } - - @Override - public Contact[] findNew() throws RemoteException { - Cursor cursor = providerClient.query(entriesURI(), new String[] { RawContacts._ID }, - RawContacts.DIRTY + "=1 AND " + COLUMN_REMOTE_NAME + " IS NULL", null, null); - LinkedList contacts = new LinkedList(); - while (cursor.moveToNext()) { - String uid = UUID.randomUUID().toString(), - resourceName = uid + ".vcf"; - Contact c = new Contact(cursor.getLong(0), resourceName, null); - c.setUid(uid); - populate(c); - - // new record: set resource name and UID in database - pendingOperations.add(ContentProviderOperation - .newUpdate(ContentUris.withAppendedId(entriesURI(), c.getLocalID())) - .withValue(COLUMN_REMOTE_NAME, resourceName) - .build()); - - contacts.add(c); - } - return contacts.toArray(new Contact[0]); - } + /* collection operations */ @Override public String getCTag() { @@ -126,13 +84,21 @@ public class LocalAddressBook extends LocalCollection { } - /* get data */ + /* content provider (= database) querying */ + + @Override + public Contact findById(long localID, String remoteName, String eTag, boolean populate) throws RemoteException { + Contact c = new Contact(localID, remoteName, eTag); + if (populate) + populate(c); + return c; + } @Override - public Contact getByRemoteName(String remoteName) throws RemoteException { + public Contact findByRemoteName(String remoteName) throws RemoteException { Cursor cursor = providerClient.query(entriesURI(), - new String[] { RawContacts._ID, COLUMN_REMOTE_NAME, COLUMN_ETAG }, - COLUMN_REMOTE_NAME + "=?", new String[] { remoteName }, null); + new String[] { RawContacts._ID, entryColumnRemoteName(), entryColumnETag() }, + entryColumnRemoteName() + "=?", new String[] { remoteName }, null); if (cursor.moveToNext()) return new Contact(cursor.getLong(0), cursor.getString(1), cursor.getString(2)); return null; @@ -145,7 +111,7 @@ public class LocalAddressBook extends LocalCollection { return; Cursor cursor = providerClient.query(ContentUris.withAppendedId(entriesURI(), c.getLocalID()), - new String[] { COLUMN_UID, RawContacts.STARRED }, null, null, null); + new String[] { entryColumnUID(), RawContacts.STARRED }, null, null, null); if (cursor.moveToNext()) { c.setUid(cursor.getString(0)); c.setStarred(cursor.getInt(1) != 0); @@ -260,133 +226,70 @@ public class LocalAddressBook extends LocalCollection { c.populated = true; return; } - - - /* create/update */ - - @Override - public void add(Resource resource) { - Contact contact = (Contact)resource; - - int idx = pendingOperations.size(); - pendingOperations.add(ContentProviderOperation.newInsert(entriesURI()) - .withValue(RawContacts.ACCOUNT_NAME, account.name) - .withValue(RawContacts.ACCOUNT_TYPE, account.type) - .withValue(COLUMN_REMOTE_NAME, contact.getName()) - .withValue(COLUMN_UID, contact.getUid()) - .withValue(COLUMN_ETAG, contact.getETag()) - .withValue(RawContacts.STARRED, contact.isStarred()) - .withYieldAllowed(true) - .build()); - addDataRows(contact, -1, idx); - } - - @Override - public void updateByRemoteName(Resource resource) throws RemoteException { - Contact remoteContact = (Contact)resource, - localContact = getByRemoteName(remoteContact.getName()); - - pendingOperations.add(ContentProviderOperation - .newUpdate(ContentUris.withAppendedId(entriesURI(), localContact.getLocalID())) - .withValue(COLUMN_ETAG, remoteContact.getETag()) - .withValue(RawContacts.STARRED, remoteContact.isStarred()) - .withYieldAllowed(true) - .build()); - - // remove all data rows ... - pendingOperations.add(ContentProviderOperation.newDelete(dataURI()) - .withSelection(Data.RAW_CONTACT_ID + "=?", - new String[] { String.valueOf(localContact.getLocalID()) }).build()); - - // ... and insert new ones - addDataRows(remoteContact, localContact.getLocalID(), -1); - } - - @Override - public void deleteAllExceptRemoteNames(Resource[] remoteResources) { - Builder builder = ContentProviderOperation.newDelete(entriesURI()); - - if (remoteResources.length != 0) { - List terms = new LinkedList(); - for (Resource res : remoteResources) - terms.add(COLUMN_REMOTE_NAME + "<>" + DatabaseUtils.sqlEscapeString(res.getName())); - String where = Joiner.on(" AND ").join(terms); - builder = builder.withSelection(where, new String[] {}); - } else - builder = builder.withSelection(COLUMN_REMOTE_NAME + " IS NOT NULL", null); - - pendingOperations.add(builder.build()); - } - - /* private helper methods */ @Override - protected Uri syncAdapterURI(Uri baseURI) { - return baseURI.buildUpon() - .appendQueryParameter(RawContacts.ACCOUNT_NAME, account.name) - .appendQueryParameter(RawContacts.ACCOUNT_TYPE, account.type) - .appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true") - .build(); + protected String fileExtension() { + return ".vcf"; } protected Uri dataURI() { return syncAdapterURI(Data.CONTENT_URI); } - - @Override - protected Uri entriesURI() { - return RawContacts.CONTENT_URI.buildUpon() - .appendQueryParameter(RawContacts.ACCOUNT_NAME, account.name) - .appendQueryParameter(RawContacts.ACCOUNT_TYPE, account.type) - .appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true") - .build(); - } - @Override - public void clearDirty(Resource resource) { - pendingOperations.add(ContentProviderOperation - .newUpdate(ContentUris.withAppendedId(entriesURI(), resource.getLocalID())) - .withValue(RawContacts.DIRTY, 0).build()); + private Builder newDataInsertBuilder(long raw_contact_id, Integer backrefIdx) { + return newDataInsertBuilder(dataURI(), Data.RAW_CONTACT_ID, raw_contact_id, backrefIdx); } - private Builder newInsertBuilder(long raw_contact_id, Integer backrefIdx) { - Builder builder = ContentProviderOperation.newInsert(dataURI()); - if (backrefIdx != -1) - return builder.withValueBackReference(Data.RAW_CONTACT_ID, backrefIdx); - else - return builder.withValue(Data.RAW_CONTACT_ID, raw_contact_id); - } - - protected void addDataRows(Contact contact, long localID, int backrefIdx) { - pendingOperations.add(buildStructuredName(newInsertBuilder(localID, backrefIdx), contact).build()); - - if (contact.getNickNames() != null) - for (String nick : contact.getNickNames().getValues()) - pendingOperations.add(buildNickName(newInsertBuilder(localID, backrefIdx), nick).build()); - - for (PhotoType photo : contact.getPhotos()) - pendingOperations.add(buildPhoto(newInsertBuilder(localID, backrefIdx), photo).build()); - - for (TelephoneType number : contact.getPhoneNumbers()) - pendingOperations.add(buildPhoneNumber(newInsertBuilder(localID, backrefIdx), number).build()); - - for (EmailType email : contact.getEmails()) - pendingOperations.add(buildEmail(newInsertBuilder(localID, backrefIdx), email).build()); - - for (UrlType url : contact.getURLs()) - pendingOperations.add(buildURL(newInsertBuilder(localID, backrefIdx), url).build()); - - for (NoteType note : contact.getNotes()) - pendingOperations.add(buildNote(newInsertBuilder(localID, backrefIdx), note).build()); - } - - /* content builder methods */ + @Override + protected Builder buildEntry(Builder builder, Contact contact) { + return builder + .withValue(RawContacts.ACCOUNT_NAME, account.name) + .withValue(RawContacts.ACCOUNT_TYPE, account.type) + .withValue(entryColumnRemoteName(), contact.getName()) + .withValue(entryColumnUID(), contact.getUid()) + .withValue(entryColumnETag(), contact.getETag()) + .withValue(RawContacts.STARRED, contact.isStarred()); + } + + + @Override + protected void addDataRows(Contact contact, long localID, int backrefIdx) { + pendingOperations.add(buildStructuredName(newDataInsertBuilder(localID, backrefIdx), contact).build()); + + if (contact.getNickNames() != null) + for (String nick : contact.getNickNames().getValues()) + pendingOperations.add(buildNickName(newDataInsertBuilder(localID, backrefIdx), nick).build()); + + for (PhotoType photo : contact.getPhotos()) + pendingOperations.add(buildPhoto(newDataInsertBuilder(localID, backrefIdx), photo).build()); + + for (TelephoneType number : contact.getPhoneNumbers()) + pendingOperations.add(buildPhoneNumber(newDataInsertBuilder(localID, backrefIdx), number).build()); + + for (EmailType email : contact.getEmails()) + pendingOperations.add(buildEmail(newDataInsertBuilder(localID, backrefIdx), email).build()); + + for (UrlType url : contact.getURLs()) + pendingOperations.add(buildURL(newDataInsertBuilder(localID, backrefIdx), url).build()); + + for (NoteType note : contact.getNotes()) + pendingOperations.add(buildNote(newDataInsertBuilder(localID, backrefIdx), note).build()); + } + + @Override + protected void removeDataRows(Contact contact) { + pendingOperations.add(ContentProviderOperation.newDelete(dataURI()) + .withSelection(Data.RAW_CONTACT_ID + "=?", + new String[] { String.valueOf(contact.getLocalID()) }).build()); + } + + protected Builder buildStructuredName(Builder builder, Contact contact) { return builder .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) diff --git a/src/at/bitfire/davdroid/resource/LocalCalendar.java b/src/at/bitfire/davdroid/resource/LocalCalendar.java index c480186a..a5f553fb 100644 --- a/src/at/bitfire/davdroid/resource/LocalCalendar.java +++ b/src/at/bitfire/davdroid/resource/LocalCalendar.java @@ -10,8 +10,6 @@ package at.bitfire.davdroid.resource; import java.net.URISyntaxException; import java.text.ParseException; import java.util.LinkedList; -import java.util.List; -import java.util.UUID; import lombok.Getter; import net.fortuna.ical4j.model.Parameter; @@ -36,33 +34,44 @@ import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; import android.database.Cursor; -import android.database.DatabaseUtils; import android.net.Uri; import android.os.RemoteException; import android.provider.CalendarContract; import android.provider.CalendarContract.Attendees; import android.provider.CalendarContract.Calendars; import android.provider.CalendarContract.Events; -import android.provider.ContactsContract.RawContacts; import android.provider.ContactsContract; import android.util.Log; import at.bitfire.davdroid.syncadapter.ServerInfo; -import com.google.common.base.Joiner; - -public class LocalCalendar extends LocalCollection { +public class LocalCalendar extends LocalCollection { private static final String TAG = "davdroid.LocalCalendar"; - protected final static String - CALENDARS_COLUMN_CTAG = Calendars.CAL_SYNC1, - EVENTS_COLUMN_REMOTE_NAME = Events._SYNC_ID, - EVENTS_COLUMN_ETAG = Events.SYNC_DATA1; - protected long id; @Getter protected String path, cTag; + protected static String COLLECTION_COLUMN_CTAG = Calendars.CAL_SYNC1; + - /* class methods */ + /* database fields */ + + @Override + protected Uri entriesURI() { + return syncAdapterURI(Events.CONTENT_URI); + } + + protected String entryColumnAccountType() { return Events.ACCOUNT_TYPE; } + protected String entryColumnAccountName() { return Events.ACCOUNT_NAME; } + + protected String entryColumnID() { return Events._ID; } + protected String entryColumnRemoteName() { return Events._SYNC_ID; } + protected String entryColumnETag() { return Events.SYNC_DATA1; } + + protected String entryColumnDirty() { return Events.DIRTY; } + protected String entryColumnDeleted() { return Events.DELETED; } + + + /* class methods, constructor */ @SuppressLint("InlinedApi") public static void create(Account account, ContentResolver resolver, ServerInfo.ResourceInfo info) throws RemoteException { @@ -86,7 +95,7 @@ public class LocalCalendar extends LocalCollection { public static LocalCalendar[] findAll(Account account, ContentProviderClient providerClient) throws RemoteException { Cursor cursor = providerClient.query(calendarsURI(account), - new String[] { Calendars._ID, Calendars.NAME, CALENDARS_COLUMN_CTAG }, + new String[] { Calendars._ID, Calendars.NAME, COLLECTION_COLUMN_CTAG }, Calendars.DELETED + "=0 AND " + Calendars.SYNC_EVENTS + "=1", null, null); LinkedList calendars = new LinkedList(); while (cursor.moveToNext()) @@ -100,72 +109,34 @@ public class LocalCalendar extends LocalCollection { this.path = path; this.cTag = cTag; } + - - /* find multiple rows */ - - @Override - public Resource[] findDeleted() throws RemoteException { - Cursor cursor = providerClient.query(entriesURI(), - new String[] { Events._ID, EVENTS_COLUMN_REMOTE_NAME, EVENTS_COLUMN_ETAG }, - Events.CALENDAR_ID + "=? AND " + Events.DELETED + "=1", new String[] { String.valueOf(id) }, null); - LinkedList events = new LinkedList(); - while (cursor.moveToNext()) - events.add(new Event(cursor.getLong(0), cursor.getString(1), cursor.getString(2))); - return events.toArray(new Event[0]); - } - - @Override - public Resource[] findDirty() throws RemoteException { - Cursor cursor = providerClient.query(entriesURI(), - new String[] { Events._ID, EVENTS_COLUMN_REMOTE_NAME, EVENTS_COLUMN_ETAG }, - Events.DIRTY + "=1", null, null); - LinkedList events = new LinkedList(); - while (cursor.moveToNext()) { - Event e = new Event(cursor.getLong(0), cursor.getString(1), cursor.getString(2)); - populate(e); - events.add(e); - } - return events.toArray(new Event[0]); - } - - @Override - public Resource[] findNew() throws RemoteException { - Cursor cursor = providerClient.query(entriesURI(), new String[] { Events._ID }, - Events.DIRTY + "=1 AND " + EVENTS_COLUMN_REMOTE_NAME + " IS NULL", null, null); - LinkedList events = new LinkedList(); - while (cursor.moveToNext()) { - String uid = UUID.randomUUID().toString(), - resourceName = uid + ".ics"; - Event e = new Event(cursor.getLong(0), resourceName, null); - e.setUid(uid); - populate(e); - - // new record: set resource name and UID in database - pendingOperations.add(ContentProviderOperation - .newUpdate(ContentUris.withAppendedId(entriesURI(), e.getLocalID())) - .withValue(EVENTS_COLUMN_REMOTE_NAME, resourceName) - .build()); - - events.add(e); - } - return events.toArray(new Event[0]); - } + /* collection operations */ @Override public void setCTag(String cTag) { pendingOperations.add(ContentProviderOperation.newUpdate(ContentUris.withAppendedId(calendarsURI(), id)) - .withValue(CALENDARS_COLUMN_CTAG, cTag) + .withValue(COLLECTION_COLUMN_CTAG, cTag) .build()); } - /* get data */ + /* content provider (= database) querying */ @Override - public Event getByRemoteName(String remoteName) throws RemoteException { - Cursor cursor = providerClient.query(entriesURI(), new String[] { Events._ID, EVENTS_COLUMN_REMOTE_NAME, EVENTS_COLUMN_ETAG }, - Events.CALENDAR_ID + "=? AND " + EVENTS_COLUMN_REMOTE_NAME + "=?", new String[] { String.valueOf(id), remoteName }, null); + public Event findById(long localID, String remoteName, String eTag, boolean populate) throws RemoteException { + Event e = new Event(localID, remoteName, eTag); + if (populate) + populate(e); + return e; + } + + @Override + public Event findByRemoteName(String remoteName) throws RemoteException { + Cursor cursor = providerClient.query(entriesURI(), + new String[] { entryColumnID(), entryColumnRemoteName(), entryColumnETag() }, + Events.CALENDAR_ID + "=? AND " + entryColumnRemoteName() + "=?", + new String[] { String.valueOf(id), remoteName }, null); if (cursor.moveToNext()) return new Event(cursor.getLong(0), cursor.getString(1), cursor.getString(2)); return null; @@ -335,62 +306,14 @@ public class LocalCalendar extends LocalCollection { } } - - /* create/update */ - - @Override - public void add(Resource resource) { - Event event = (Event) resource; - - int idx = pendingOperations.size(); - pendingOperations.add(buildEvent(ContentProviderOperation.newInsert(entriesURI()), event) - .withYieldAllowed(true) - .build()); - - addDataRows(event, -1, idx); - } - - @Override - public void updateByRemoteName(Resource remoteResource) throws RemoteException { - Event remoteEvent = (Event) remoteResource, - localEvent = (Event) getByRemoteName(remoteResource.getName()); - - pendingOperations.add(buildEvent( - ContentProviderOperation.newUpdate(ContentUris.withAppendedId(entriesURI(), localEvent.getLocalID())), remoteEvent) - .withYieldAllowed(true).build()); - - pendingOperations.add(ContentProviderOperation.newDelete(syncAdapterURI(Attendees.CONTENT_URI)) - .withSelection(Attendees.EVENT_ID + "=?", - new String[] { String.valueOf(localEvent.getLocalID()) }).build()); - - addDataRows(remoteEvent, localEvent.getLocalID(), -1); - } - - @Override - public void delete(Resource event) { - pendingOperations.add(ContentProviderOperation.newDelete( - ContentUris.withAppendedId(entriesURI(), event.getLocalID())).build()); - } - - @Override - public void deleteAllExceptRemoteNames(Resource[] remoteResources) { - Builder builder = ContentProviderOperation.newDelete(entriesURI()); - - if (remoteResources.length != 0) { - List terms = new LinkedList(); - for (Resource res : remoteResources) - terms.add(EVENTS_COLUMN_REMOTE_NAME + "<>" + DatabaseUtils.sqlEscapeString(res.getName())); - String where = Joiner.on(" AND ").join(terms); - builder = builder.withSelection(where, null); - } else - builder = builder.withSelection(EVENTS_COLUMN_REMOTE_NAME + " IS NOT NULL", null); - - pendingOperations.add(builder.build()); - } - /* private helper methods */ + @Override + protected String fileExtension() { + return ".ics"; + } + protected static Uri calendarsURI(Account account) { return Calendars.CONTENT_URI.buildUpon().appendQueryParameter(Calendars.ACCOUNT_NAME, account.name) .appendQueryParameter(Calendars.ACCOUNT_TYPE, account.type) @@ -401,47 +324,16 @@ public class LocalCalendar extends LocalCollection { return calendarsURI(account); } - @Override - protected Uri syncAdapterURI(Uri baseURI) { - return baseURI.buildUpon() - .appendQueryParameter(Events.ACCOUNT_NAME, account.name) - .appendQueryParameter(Events.ACCOUNT_TYPE, account.type) - .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true") - .build(); - } - - @Override - protected Uri entriesURI() { - return syncAdapterURI(Events.CONTENT_URI); - } - - @Override - public void clearDirty(Resource resource) { - pendingOperations.add(ContentProviderOperation - .newUpdate(ContentUris.withAppendedId(entriesURI(), resource.getLocalID())) - .withValue(Events.DIRTY, 0).build()); - } - - private Builder newInsertBuilder(Uri dataUri, String refFieldName, long raw_ref_id, Integer backrefIdx) { - Builder builder = ContentProviderOperation.newInsert(syncAdapterURI(dataUri)); - if (backrefIdx != -1) - return builder.withValueBackReference(refFieldName, backrefIdx); - else - return builder.withValue(refFieldName, raw_ref_id); - } - - protected void addDataRows(Event event, long localID, int backrefIdx) { - for (Attendee attendee : event.getAttendees()) - pendingOperations.add(buildAttendee(newInsertBuilder(Attendees.CONTENT_URI, Attendees.EVENT_ID, localID, backrefIdx), attendee).build()); - } /* content builder methods */ - protected Builder buildEvent(Builder builder, Event event) { - builder = builder.withValue(Events.CALENDAR_ID, id) - .withValue(EVENTS_COLUMN_REMOTE_NAME, event.getName()) - .withValue(EVENTS_COLUMN_ETAG, event.getETag()) + @Override + protected Builder buildEntry(Builder builder, Event event) { + builder = builder + .withValue(Events.CALENDAR_ID, id) + .withValue(entryColumnRemoteName(), event.getName()) + .withValue(entryColumnETag(), event.getETag()) .withValue(Events.ALL_DAY, event.isAllDay() ? 1 : 0) .withValue(Events.DTSTART, event.getDtStartInMillis()) .withValue(Events.DTEND, event.getDtEndInMillis()) @@ -482,6 +374,21 @@ public class LocalCalendar extends LocalCollection { return builder; } + + + @Override + protected void addDataRows(Event event, long localID, int backrefIdx) { + for (Attendee attendee : event.getAttendees()) + pendingOperations.add(buildAttendee(newDataInsertBuilder(Attendees.CONTENT_URI, Attendees.EVENT_ID, localID, backrefIdx), attendee).build()); + } + + @Override + protected void removeDataRows(Event event) { + pendingOperations.add(ContentProviderOperation.newDelete(syncAdapterURI(Attendees.CONTENT_URI)) + .withSelection(Attendees.EVENT_ID + "=?", + new String[] { String.valueOf(event.getLocalID()) }).build()); + } + @SuppressLint("InlinedApi") protected Builder buildAttendee(Builder builder, Attendee attendee) { diff --git a/src/at/bitfire/davdroid/resource/LocalCollection.java b/src/at/bitfire/davdroid/resource/LocalCollection.java index 8d163e45..85b9af45 100644 --- a/src/at/bitfire/davdroid/resource/LocalCollection.java +++ b/src/at/bitfire/davdroid/resource/LocalCollection.java @@ -8,61 +8,195 @@ package at.bitfire.davdroid.resource; import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.UUID; import android.accounts.Account; import android.content.ContentProviderClient; import android.content.ContentProviderOperation; +import android.content.ContentProviderOperation.Builder; import android.content.ContentUris; import android.content.OperationApplicationException; +import android.database.Cursor; +import android.database.DatabaseUtils; import android.net.Uri; import android.os.RemoteException; -import android.provider.ContactsContract; -import android.provider.CalendarContract.Events; -import android.provider.ContactsContract.RawContacts; +import android.provider.CalendarContract; -public abstract class LocalCollection { +import com.google.common.base.Joiner; + +public abstract class LocalCollection { protected Account account; protected ContentProviderClient providerClient; - protected ArrayList pendingOperations = new ArrayList();; + protected ArrayList pendingOperations = new ArrayList(); + + // database fields + + abstract protected Uri entriesURI(); + + abstract protected String entryColumnAccountType(); + abstract protected String entryColumnAccountName(); + + abstract protected String entryColumnID(); + abstract protected String entryColumnRemoteName(); + abstract protected String entryColumnETag(); + + abstract protected String entryColumnDirty(); + abstract protected String entryColumnDeleted(); + + LocalCollection(Account account, ContentProviderClient providerClient) { this.account = account; this.providerClient = providerClient; } - - // query - abstract public Resource[] findDeleted() throws RemoteException; - abstract public Resource[] findDirty() throws RemoteException; - abstract public Resource[] findNew() throws RemoteException; - // cache management + + // collection operations + abstract public String getCTag(); abstract public void setCTag(String cTag); + - // fetch - public abstract Resource getByRemoteName(String name) throws RemoteException; - public abstract void populate(Resource record) throws RemoteException; + // content provider (= database) querying - // modify - public abstract void add(Resource resource); - public abstract void updateByRemoteName(Resource remoteResource) throws RemoteException; - - public void delete(Resource resource) { - pendingOperations.add(ContentProviderOperation.newDelete( - ContentUris.withAppendedId(entriesURI(), resource.getLocalID())) - .build()); + public Resource[] findDirty() throws RemoteException { + Cursor cursor = providerClient.query(entriesURI(), + new String[] { entryColumnID(), entryColumnRemoteName(), entryColumnETag() }, + entryColumnDirty() + "=1", null, null); + LinkedList dirty = new LinkedList(); + while (cursor.moveToNext()) + dirty.add(findById(cursor.getLong(0), cursor.getString(1), cursor.getString(2), true)); + return dirty.toArray(new Resource[0]); + } + + public Resource[] findDeleted() throws RemoteException { + Cursor cursor = providerClient.query(entriesURI(), + new String[] { entryColumnID(), entryColumnRemoteName(), entryColumnETag() }, + entryColumnDeleted() + "=1", null, null); + LinkedList deleted = new LinkedList(); + while (cursor.moveToNext()) + deleted.add(findById(cursor.getLong(0), cursor.getString(1), cursor.getString(2), false)); + return deleted.toArray(new Resource[0]); + } + + public Resource[] findNew() throws RemoteException { + Cursor cursor = providerClient.query(entriesURI(), + new String[] { entryColumnID() }, + entryColumnDirty() + "=1 AND " + entryColumnRemoteName() + " IS NULL", null, null); + LinkedList fresh = new LinkedList(); + while (cursor.moveToNext()) { + String uid = UUID.randomUUID().toString(), + resourceName = uid + fileExtension(); + Resource resource = findById(cursor.getLong(0), resourceName, null, true); //new Event(cursor.getLong(0), resourceName, null); + resource.setUid(uid); + + // new record: set generated resource name in database + pendingOperations.add(ContentProviderOperation + .newUpdate(ContentUris.withAppendedId(entriesURI(), resource.getLocalID())) + .withValue(entryColumnRemoteName(), resourceName) + .build()); + + fresh.add(resource); + } + return fresh.toArray(new Event[0]); } - public abstract void deleteAllExceptRemoteNames(Resource[] remoteRecords); + abstract public Resource findById(long localID, String resourceName, String eTag, boolean populate) throws RemoteException; + abstract public ResourceType findByRemoteName(String name) throws RemoteException; + + public abstract void populate(Resource record) throws RemoteException; + - // database operations - protected abstract Uri syncAdapterURI(Uri baseURI); - protected abstract Uri entriesURI(); - public abstract void clearDirty(Resource resource); + // create/update/delete + public void add(ResourceType resource) { + int idx = pendingOperations.size(); + pendingOperations.add( + buildEntry(ContentProviderOperation.newInsert(entriesURI()), resource) + .withYieldAllowed(true) + .build()); + + addDataRows(resource, -1, idx); + } + + public void updateByRemoteName(ResourceType remoteResource) throws RemoteException { + ResourceType localResource = findByRemoteName(remoteResource.getName()); + + pendingOperations.add( + buildEntry(ContentProviderOperation.newUpdate(ContentUris.withAppendedId(entriesURI(), localResource.getLocalID())), remoteResource) + .withValue(entryColumnETag(), remoteResource.getETag()) + .withYieldAllowed(true) + .build()); + + removeDataRows(localResource); + addDataRows(remoteResource, localResource.getLocalID(), -1); + } + + public void delete(Resource resource) { + pendingOperations.add(ContentProviderOperation + .newDelete(ContentUris.withAppendedId(entriesURI(), resource.getLocalID())) + .withYieldAllowed(true) + .build()); + } + + public void deleteAllExceptRemoteNames(Resource[] remoteResources) { + Builder builder = ContentProviderOperation.newDelete(entriesURI()); + + if (remoteResources.length != 0) { + List terms = new LinkedList(); + for (Resource res : remoteResources) + terms.add(entryColumnRemoteName() + "<>" + DatabaseUtils.sqlEscapeString(res.getName())); + String where = Joiner.on(" AND ").join(terms); + builder = builder.withSelection(where, new String[] {}); + } else + builder = builder.withSelection(entryColumnRemoteName() + " IS NOT NULL", null); + + pendingOperations.add(builder + .withYieldAllowed(true) + .build()); + } + + public void clearDirty(Resource resource) { + pendingOperations.add(ContentProviderOperation + .newUpdate(ContentUris.withAppendedId(entriesURI(), resource.getLocalID())) + .withValue(entryColumnDirty(), 0).build()); + } + public void commit() throws RemoteException, OperationApplicationException { if (!pendingOperations.isEmpty()) providerClient.applyBatch(pendingOperations); + pendingOperations.clear(); } + + + // helpers + + protected abstract String fileExtension(); + + protected Uri syncAdapterURI(Uri baseURI) { + return baseURI.buildUpon() + .appendQueryParameter(entryColumnAccountType(), account.type) + .appendQueryParameter(entryColumnAccountName(), account.name) + .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true") + .build(); + } + + protected Builder newDataInsertBuilder(Uri dataUri, String refFieldName, long raw_ref_id, Integer backrefIdx) { + Builder builder = ContentProviderOperation.newInsert(syncAdapterURI(dataUri)); + if (backrefIdx != -1) + return builder.withValueBackReference(refFieldName, backrefIdx); + else + return builder.withValue(refFieldName, raw_ref_id); + } + + + // content builders + + protected abstract Builder buildEntry(Builder builder, ResourceType resource); + + protected abstract void addDataRows(ResourceType resource, long localID, int backrefIdx); + protected abstract void removeDataRows(ResourceType resource); } diff --git a/src/at/bitfire/davdroid/resource/RemoteCollection.java b/src/at/bitfire/davdroid/resource/RemoteCollection.java index 927a2c3d..b5ea6528 100644 --- a/src/at/bitfire/davdroid/resource/RemoteCollection.java +++ b/src/at/bitfire/davdroid/resource/RemoteCollection.java @@ -8,24 +8,35 @@ package at.bitfire.davdroid.resource; import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.LinkedList; +import java.util.List; +import lombok.Getter; import net.fortuna.ical4j.data.ParserException; import org.apache.http.HttpException; -import lombok.Getter; import at.bitfire.davdroid.webdav.HttpPropfind; import at.bitfire.davdroid.webdav.WebDavCollection; +import at.bitfire.davdroid.webdav.WebDavCollection.MultigetType; import at.bitfire.davdroid.webdav.WebDavResource; import at.bitfire.davdroid.webdav.WebDavResource.PutMode; -public abstract class RemoteCollection { +public abstract class RemoteCollection { @Getter WebDavCollection collection; - protected abstract String memberContentType(); + abstract protected String memberContentType(); + abstract protected MultigetType multiGetType(); + abstract protected ResourceType newResourceSkeleton(String name, String ETag); + + public RemoteCollection(String baseURL, String user, String password) throws IOException, URISyntaxException { + collection = new WebDavCollection(new URI(baseURL), user, password); + } - /* collection methods */ + /* collection operations */ public String getCTag() throws IOException, HttpException { try { @@ -39,33 +50,57 @@ public abstract class RemoteCollection { public Resource[] getMemberETags() throws IOException, IncapableResourceException, HttpException { collection.propfind(HttpPropfind.Mode.MEMBERS_ETAG); - return null; + + List resources = new LinkedList(); + for (WebDavResource member : collection.getMembers()) + resources.add(newResourceSkeleton(member.getName(), member.getETag())); + return resources.toArray(new Resource[0]); } - public abstract Resource[] multiGet(Resource[] resource) throws IOException, IncapableResourceException, HttpException, ParserException; + @SuppressWarnings("unchecked") + public Resource[] multiGet(ResourceType[] resources) throws IOException, IncapableResourceException, HttpException, ParserException { + if (resources.length == 1) { + Resource resource = get(resources[0]); + return (resource != null) ? (ResourceType[]) new Resource[] { resource } : null; + } + + LinkedList names = new LinkedList(); + for (ResourceType resource : resources) + names.add(resource.getName()); + + collection.multiGet(names.toArray(new String[0]), multiGetType()); + + LinkedList foundResources = new LinkedList(); + for (WebDavResource member : collection.getMembers()) { + ResourceType resource = newResourceSkeleton(member.getName(), member.getETag()); + resource.parseEntity(member.getContent()); + foundResources.add(resource); + } + return foundResources.toArray(new Resource[0]); + } - /* internal member methods */ + /* internal member operations */ - public Resource get(Resource resource) throws IOException, HttpException, ParserException { + public ResourceType get(ResourceType resource) throws IOException, HttpException, ParserException { WebDavResource member = new WebDavResource(collection, resource.getName()); member.get(); resource.parseEntity(member.getContent()); return resource; } - public void add(Resource resource) throws IOException, HttpException { + public void add(ResourceType resource) throws IOException, HttpException { WebDavResource member = new WebDavResource(collection, resource.getName(), resource.getETag()); member.setContentType(memberContentType()); member.put(resource.toEntity().getBytes("UTF-8"), PutMode.ADD_DONT_OVERWRITE); } - public void delete(Resource resource) throws IOException, HttpException { + public void delete(ResourceType resource) throws IOException, HttpException { WebDavResource member = new WebDavResource(collection, resource.getName(), resource.getETag()); member.delete(); } - public void update(Resource resource) throws IOException, HttpException { + public void update(ResourceType resource) throws IOException, HttpException { WebDavResource member = new WebDavResource(collection, resource.getName(), resource.getETag()); member.setContentType(memberContentType()); member.put(resource.toEntity().getBytes("UTF-8"), PutMode.UPDATE_DONT_OVERWRITE); diff --git a/src/at/bitfire/davdroid/resource/Resource.java b/src/at/bitfire/davdroid/resource/Resource.java index 4d54015e..cd2a9723 100644 --- a/src/at/bitfire/davdroid/resource/Resource.java +++ b/src/at/bitfire/davdroid/resource/Resource.java @@ -12,11 +12,13 @@ import java.io.InputStream; import net.fortuna.ical4j.data.ParserException; import lombok.Getter; +import lombok.Setter; import lombok.ToString; @ToString public abstract class Resource { @Getter protected String name, ETag; + @Getter @Setter protected String uid; @Getter protected long localID; @Getter protected boolean populated = false; diff --git a/src/at/bitfire/davdroid/syncadapter/SyncManager.java b/src/at/bitfire/davdroid/syncadapter/SyncManager.java index 0ddbc0cf..e9ddc8aa 100644 --- a/src/at/bitfire/davdroid/syncadapter/SyncManager.java +++ b/src/at/bitfire/davdroid/syncadapter/SyncManager.java @@ -120,7 +120,7 @@ public class SyncManager { return; for (Resource remoteResource : remoteResources) { - Resource localResource = local.getByRemoteName(remoteResource.getName()); + Resource localResource = local.findByRemoteName(remoteResource.getName()); if (localResource == null) resourcesToAdd.add(remoteResource); else if (localResource.getETag() == null || !localResource.getETag().equals(remoteResource.getETag())) diff --git a/test/src/at/bitfire/davdroid/test/CalendarTest.java b/test/src/at/bitfire/davdroid/test/CalendarTest.java index 55a5a961..f0ff74b0 100644 --- a/test/src/at/bitfire/davdroid/test/CalendarTest.java +++ b/test/src/at/bitfire/davdroid/test/CalendarTest.java @@ -1,16 +1,19 @@ +/******************************************************************************* + * Copyright (c) 2013 Richard Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + ******************************************************************************/ package at.bitfire.davdroid.test; import java.io.IOException; import java.io.InputStream; -import java.util.Calendar; -import java.util.TimeZone; import junit.framework.Assert; import net.fortuna.ical4j.data.ParserException; -import net.fortuna.ical4j.model.Date; import android.content.res.AssetManager; import android.test.InstrumentationTestCase; -import android.text.format.Time; import at.bitfire.davdroid.resource.Event; public class CalendarTest extends InstrumentationTestCase { diff --git a/test/src/at/bitfire/davdroid/test/ContactTest.java b/test/src/at/bitfire/davdroid/test/ContactTest.java index 5fc80796..51e1c3fc 100644 --- a/test/src/at/bitfire/davdroid/test/ContactTest.java +++ b/test/src/at/bitfire/davdroid/test/ContactTest.java @@ -1,3 +1,10 @@ +/******************************************************************************* + * Copyright (c) 2013 Richard Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + ******************************************************************************/ package at.bitfire.davdroid.test; import java.io.IOException;