/** {@inheritDoc} */ @Override public void writeToParcel(Parcel dest, int flags) { final int size = this.size(); dest.writeInt(size); for (RawContactDelta delta : this) { dest.writeParcelable(delta, flags); } dest.writeLongArray(mJoinWithRawContactIds); dest.writeInt(mSplitRawContacts ? 1 : 0); }
/** * Find index of given {@link RawContacts#_ID} when present. */ public int indexOfRawContactId(Long rawContactId) { if (rawContactId == null) return -1; final int size = this.size(); for (int i = 0; i < size; i++) { final Long currentId = getRawContactId(i); if (rawContactId.equals(currentId)) { return i; } } return -1; }
/** * Builds {@link AggregationExceptions} to split all constituent raw contacts into * separate contacts. */ private void buildSplitContactDiff(final ArrayList<ContentProviderOperation> diff, int[] backRefs) { final int count = size(); for (int i = 0; i < count; i++) { for (int j = 0; j < count; j++) { if (i == j) { continue; } final Builder builder = buildSplitContactDiffHelper(i, j, backRefs); if (builder != null) { diff.add(builder.build()); } } } }
/** * For compatibility purpose, this method is copied from {@link #buildSplitContactDiff} and * takes an ArrayList of CPOWrapper as parameter. */ private void buildSplitContactDiffWrapper(final ArrayList<CPOWrapper> diff, int[] backRefs) { final int count = size(); for (int i = 0; i < count; i++) { for (int j = 0; j < count; j++) { if (i == j) { continue; } final Builder builder = buildSplitContactDiffHelper(i, j, backRefs); if (builder != null) { diff.add(new CPOWrapper(builder.build(), CompatUtils.TYPE_UPDATE)); } } } }
/** * Find {@link RawContacts#_ID} of the requested {@link RawContactDelta}. */ public Long getRawContactId(int index) { if (index >= 0 && index < this.size()) { final RawContactDelta delta = this.get(index); final ValuesDelta values = delta.getValues(); if (values.isVisible()) { return values.getAsLong(RawContacts._ID); } } return null; }
int backRefs[] = new int[size()];
int backRefs[] = new int[size()];