14b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee/*
24b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee * Copyright (C) 2011 The Android Open Source Project
34b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee *
44b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee * Licensed under the Apache License, Version 2.0 (the "License");
54b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee * you may not use this file except in compliance with the License.
64b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee * You may obtain a copy of the License at
74b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee *
84b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee *      http://www.apache.org/licenses/LICENSE-2.0
94b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee *
104b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee * Unless required by applicable law or agreed to in writing, software
114b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee * distributed under the License is distributed on an "AS IS" BASIS,
124b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee * See the License for the specific language governing permissions and
144b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee * limitations under the License
154b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee */
16aeaba441ddb05dede8bd86291ca78f42d670d54cFlavio Lerda
174b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjeepackage com.android.providers.contacts;
184b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee
194b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjeeimport android.content.ContentValues;
204b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjeeimport android.database.Cursor;
214b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjeeimport android.net.Uri;
224b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjeeimport android.os.ParcelFileDescriptor;
234b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee
2438210445730ee04c351c7cc1b3800cfe23e34325Makoto Onukiimport com.android.providers.contacts.VoicemailContentProvider.UriData;
2538210445730ee04c351c7cc1b3800cfe23e34325Makoto Onuki
269cf06e7bcb0be759f1c930412fd2e41eba4f5f03Debashish Chatterjeeimport java.io.FileNotFoundException;
279cf06e7bcb0be759f1c930412fd2e41eba4f5f03Debashish Chatterjee
284b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee/**
294b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee * Defines interfaces for communication between voicemail content provider and voicemail table
304b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee * implementations.
314b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee */
324b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjeepublic interface VoicemailTable {
334b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee    /**
344b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee     * Interface that the voicemail content provider uses to delegate database level operations
354b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee     * to the appropriate voicemail table implementation.
364b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee     */
374b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee    public interface Delegate {
384b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee        public Uri insert(UriData uriData, ContentValues values);
394b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee        public int delete(UriData uriData, String selection, String[] selectionArgs);
404b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee        public Cursor query(UriData uriData, String[] projection, String selection,
414b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee                String[] selectionArgs, String sortOrder);
424b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee        public int update(UriData uriData, ContentValues values, String selection,
434b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee                String[] selectionArgs);
444b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee        public String getType(UriData uriData);
459cf06e7bcb0be759f1c930412fd2e41eba4f5f03Debashish Chatterjee        public ParcelFileDescriptor openFile(UriData uriData, String mode)
469cf06e7bcb0be759f1c930412fd2e41eba4f5f03Debashish Chatterjee                throws FileNotFoundException;
474b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee    }
484b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee
494b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee    /**
504b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee     * A helper interface that an implementation of {@link Delegate} uses to access common
514b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee     * functionality across different voicemail tables.
524b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee     */
534b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee    public interface DelegateHelper {
544b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee        /**
554b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee         * Inserts source_package field into ContentValues. Used in insert operations.
564b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee         */
574b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee        public void checkAndAddSourcePackageIntoValues(UriData uriData, ContentValues values);
589cf06e7bcb0be759f1c930412fd2e41eba4f5f03Debashish Chatterjee
599cf06e7bcb0be759f1c930412fd2e41eba4f5f03Debashish Chatterjee        /**
609cf06e7bcb0be759f1c930412fd2e41eba4f5f03Debashish Chatterjee         * Opens the file pointed to by the column "_data".
619cf06e7bcb0be759f1c930412fd2e41eba4f5f03Debashish Chatterjee         * @throws FileNotFoundException
629cf06e7bcb0be759f1c930412fd2e41eba4f5f03Debashish Chatterjee         */
639cf06e7bcb0be759f1c930412fd2e41eba4f5f03Debashish Chatterjee        public ParcelFileDescriptor openDataFile(UriData uriData, String mode)
649cf06e7bcb0be759f1c930412fd2e41eba4f5f03Debashish Chatterjee                throws FileNotFoundException;
654b571ba0de4fac4ff9d2a4277032b8c6548fdbfaDebashish Chatterjee    }
669cf06e7bcb0be759f1c930412fd2e41eba4f5f03Debashish Chatterjee}
67