/**
* Copyright (c) 2011, SOCIETIES Consortium (WATERFORD INSTITUTE OF TECHNOLOGY (TSSG), HERIOT-WATT UNIVERSITY (HWU), SOLUTA.NET
* (SN), GERMAN AEROSPACE CENTRE (Deutsches Zentrum fuer Luft- und Raumfahrt e.V.) (DLR), Zavod za varnostne tehnologije
* informacijske dru�be in elektronsko poslovanje (SETCCE), INSTITUTE OF COMMUNICATION AND COMPUTER SYSTEMS (ICCS), LAKE
* COMMUNICATIONS (LAKE), INTEL PERFORMANCE LEARNING SOLUTIONS LTD (INTEL), PORTUGAL TELECOM INOVA��O, SA (PTIN), IBM Corp.,
* INSTITUT TELECOM (ITSUD), AMITEC DIACHYTI EFYIA PLIROFORIKI KAI EPIKINONIES ETERIA PERIORISMENIS EFTHINIS (AMITEC), TELECOM
* ITALIA S.p.a.(TI), TRIALOG (TRIALOG), Stiftelsen SINTEF (SINTEF), NEC EUROPE LTD (NEC))
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.societies.android.platform;
import android.content.ContentValues;
import android.database.Cursor;
/**
* All adapters have to implement this interface. It follows a logic very
* similar to Android content provider. The authorities and URLs are documented
* in {@link SocialContract2}. Currently it supports CRUD on people, groups and
* apps.
*
* for the first four methods below see Content Provider interfaces in Android.
*
* @author Babak.Farshchian@sintef.no
*
*/
public interface ISocialAdapter {
//CRUD for people:
public long insertPeople(ContentValues values);
public Cursor queryPeople(String[] projection, String selection,
String[] selectionArgs, String sortOrder);
public int updatePeople(ContentValues values, String selection,
String[] selectionArgs);
public int deletePeople(String _selection, String[] _selectionArgs);
//CRUD for communities:
public long insertCommunities(ContentValues values);
public Cursor queryCommunities(String[] projection, String selection,
String[] selectionArgs, String sortOrder);
public int updateCommunities(ContentValues values, String selection,
String[] selectionArgs);
public int deleteCommunities(String _selection, String[] _selectionArgs);
//CRUD for services:
public long insertServices(ContentValues values);
public Cursor queryServices(String[] projection, String selection,
String[] selectionArgs, String sortOrder);
public int updateServices(ContentValues values, String selection,
String[] selectionArgs);
public int deleteServices(String _selection, String[] _selectionArgs);
//CRUD for relationships:
public long insertRelationship(ContentValues values);
public Cursor queryRelationship(String[] projection, String selection,
String[] selectionArgs, String sortOrder);
public int updateRelationship(ContentValues values, String selection,
String[] selectionArgs);
public int deleteRelationship(String _selection, String[] _selectionArgs);
//CRUD for membership:
public long insertMembership(ContentValues values);
public Cursor queryMembership(String[] projection, String selection,
String[] selectionArgs, String sortOrder);
public int updateMembership(ContentValues values, String selection,
String[] selectionArgs);
public int deleteMembership(String _selection, String[] _selectionArgs);
//CRUD for sharing:
public long insertSharing(ContentValues values);
public Cursor querySharing(String[] projection, String selection,
String[] selectionArgs, String sortOrder);
public int updateSharing(ContentValues values, String selection,
String[] selectionArgs);
public int deleteSharing(String _selection, String[] _selectionArgs);
//CRUD for people activities:
public long insertPeopleActivity(ContentValues values);
public Cursor queryPeopleActivity(String[] projection, String selection,
String[] selectionArgs, String sortOrder);
public int updatePeopleActivity(ContentValues values, String selection,
String[] selectionArgs);
public int deletePeopleActivity(String _selection, String[] _selectionArgs);
//CRUD for community activities:
public long insertCommunityActivity(ContentValues values);
public Cursor queryCommunityActivity(String[] projection, String selection,
String[] selectionArgs, String sortOrder);
public int updateCommunityActivity(ContentValues values, String selection,
String[] selectionArgs);
public int deleteCommunityActivity(String _selection, String[] _selectionArgs);
//CRUD for service activities:
public long insertServiceActivity(ContentValues values);
public Cursor queryServiceActivity(String[] projection, String selection,
String[] selectionArgs, String sortOrder);
public int updateServiceActivity(ContentValues values, String selection,
String[] selectionArgs);
public int deleteServiceActivity(String _selection, String[] _selectionArgs);
//CRUD for me:
public long insertMe(ContentValues values);
public Cursor queryMe(String[] projection, String selection,
String[] selectionArgs, String sortOrder);
public int updateMe(ContentValues values, String selection,
String[] selectionArgs);
public int deleteMe(String _selection, String[] _selectionArgs);
/**
* A method that can be used to check whether this adapter is usable.
* @return true if connection is on.
*/
public boolean isConnected();
/**
* Called to make this adapter usable for storing and querying data.
* @return 1 if connection was set up correctly
* TODO: Need to define other values for error reporting.
*/
public int connect();
/**
* Called to make this adapter usable for storing and querying data in a location that requires credential.
*
* @param username
* @param password
* @return 1 if connection was set up correctly.
*
*/
public int connect(String username, String password);
public int disconnect();
public boolean firstRun();
/**
* Retrieves the list of CISs owned by CIS Manager
*
* @return list of ICisOwned in the callback object*/
public void getListOfOwnedCis(ISocialAdapterCallback callback);
}