public ArrayList<ValuesDelta> getMimeEntries(String mimeType) { return getMimeEntries(mimeType, false); }
/** * Ensure that at least one of the given {@link DataKind} exists in the * given {@link RawContactDelta} state, and try creating one if none exist. * @return The child (either newly created or the first existing one), or null if the * account doesn't support this {@link DataKind}. */ public static ValuesDelta ensureKindExists( RawContactDelta state, AccountType accountType, String mimeType) { final DataKind kind = accountType.getKindForMimetype(mimeType); final boolean hasChild = state.getMimeEntriesCount(mimeType, true) > 0; if (kind != null) { if (hasChild) { // Return the first entry. return state.getMimeEntries(mimeType).get(0); } else { // Create child when none exists and valid kind final ValuesDelta child = insertChild(state, kind); if (kind.mimeType.equals(Photo.CONTENT_ITEM_TYPE)) { child.setFromTemplate(true); } return child; } } return null; }
public ValuesDelta addEntry(ValuesDelta entry) { final String mimeType = entry.getMimetype(); getMimeEntries(mimeType, true).add(entry); return entry; }
public int getMimeEntriesCount(String mimeType, boolean onlyVisible) { final ArrayList<ValuesDelta> mimeEntries = getMimeEntries(mimeType); if (mimeEntries == null) return 0; int count = 0; for (ValuesDelta child : mimeEntries) { // Skip deleted items when requesting only visible if (onlyVisible && !child.isVisible()) continue; count++; } return count; }
/** * Get the {@link ValuesDelta} child marked as {@link Data#IS_PRIMARY}, * which may return null when no entry exists. */ public ValuesDelta getPrimaryEntry(String mimeType) { final ArrayList<ValuesDelta> mimeEntries = getMimeEntries(mimeType, false); if (mimeEntries == null) return null; for (ValuesDelta entry : mimeEntries) { if (entry.isPrimary()) { return entry; } } // When no direct primary, return something return mimeEntries.size() > 0 ? mimeEntries.get(0) : null; }
public ValuesDelta getSuperPrimaryEntry(final String mimeType) { ValuesDelta primary = null; ValuesDelta randomEntry = null; for (RawContactDelta delta : this) { final ArrayList<ValuesDelta> mimeEntries = delta.getMimeEntries(mimeType); if (mimeEntries == null) return null; for (ValuesDelta entry : mimeEntries) { if (entry.isSuperPrimary()) { return entry; } else if (primary == null && entry.isPrimary()) { primary = entry; } else if (randomEntry == null) { randomEntry = entry; } } } // When no direct super primary, return something if (primary != null) { return primary; } return randomEntry; }
/** * Returns the super-primary entry for the given mime type * @param forceSelection if true, will try to return some value even if a super-primary * doesn't exist (may be a primary, or just a random item * @return */ @NeededForTesting public ValuesDelta getSuperPrimaryEntry(String mimeType, boolean forceSelection) { final ArrayList<ValuesDelta> mimeEntries = getMimeEntries(mimeType, false); if (mimeEntries == null) return null; ValuesDelta primary = null; for (ValuesDelta entry : mimeEntries) { if (entry.isSuperPrimary()) { return entry; } else if (entry.isPrimary()) { primary = entry; } } if (!forceSelection) { return null; } // When no direct super primary, return something if (primary != null) { return primary; } return mimeEntries.size() > 0 ? mimeEntries.get(0) : null; }
/** @hide Public only for testing. */ public static void migrateGenericWithoutTypeColumn( RawContactDelta oldState, RawContactDelta newState, DataKind newDataKind) { final ArrayList<ValuesDelta> mimeEntries = ensureEntryMaxSize(newState, newDataKind, oldState.getMimeEntries(newDataKind.mimeType)); if (mimeEntries == null || mimeEntries.isEmpty()) { return; } for (ValuesDelta entry : mimeEntries) { ContentValues values = entry.getAfter(); if (values != null) { newState.addEntry(ValuesDelta.fromAfter(values)); } } }
DataKind newDataKind, Integer defaultYear) { final ArrayList<ValuesDelta> mimeEntries = ensureEntryMaxSize(newState, newDataKind, oldState.getMimeEntries(Event.CONTENT_ITEM_TYPE)); if (mimeEntries == null || mimeEntries.isEmpty()) { return;
private static boolean hasChanges(RawContactDelta state, AccountType accountType, Set<String> excludedMimeTypes) { for (DataKind kind : accountType.getSortedDataKinds()) { final String mimeType = kind.mimeType; if (excludedMimeTypes != null && excludedMimeTypes.contains(mimeType)) continue; final ArrayList<ValuesDelta> entries = state.getMimeEntries(mimeType); if (entries == null) continue; for (ValuesDelta entry : entries) { // An empty Insert must be ignored, because it won't save anything (an example // is an empty name that stays empty) final boolean isRealInsert = entry.isInsert() && !isEmpty(entry, kind); if (isRealInsert || entry.isUpdate() || entry.isDelete()) { return true; } } } return false; }
migrateStructuredName(context, oldState, newState, kind); } else { List<ValuesDelta> entryList = oldState.getMimeEntries(mimeType); if (entryList != null && !entryList.isEmpty()) { for (ValuesDelta entry : entryList) {
final ArrayList<ValuesDelta> mimeEntries = oldState.getMimeEntries(newDataKind.mimeType); if (mimeEntries == null || mimeEntries.isEmpty()) { return;
DataKind newDataKind) { final ArrayList<ValuesDelta> mimeEntries = ensureEntryMaxSize(newState, newDataKind, oldState.getMimeEntries(StructuredPostal.CONTENT_ITEM_TYPE)); if (mimeEntries == null || mimeEntries.isEmpty()) { return;
ArrayList<ValuesDelta> entries = state.getMimeEntries(mimeType);
final ArrayList<ValuesDelta> entries = state.getMimeEntries(mimeType); if (entries == null) continue;
/** * Count up the frequency that each {@link EditType} appears in the given * {@link RawContactDelta}. The returned {@link SparseIntArray} maps from * {@link EditType#rawValue} to counts, with the total overall count stored * as {@link #FREQUENCY_TOTAL}. */ private static SparseIntArray getTypeFrequencies(RawContactDelta state, DataKind kind) { final SparseIntArray typeCount = new SparseIntArray(); // Find all entries for this kind, bailing early if none found final List<ValuesDelta> mimeEntries = state.getMimeEntries(kind.mimeType); if (mimeEntries == null) return typeCount; int totalCount = 0; for (ValuesDelta entry : mimeEntries) { // Only count visible entries if (!entry.isVisible()) continue; totalCount++; final EditType type = getCurrentType(entry, kind); if (type != null) { final int count = typeCount.get(type.rawValue); typeCount.put(type.rawValue, count + 1); } } typeCount.put(FREQUENCY_TOTAL, totalCount); return typeCount; }