adding notification preference for invite notifications
authorNikita Kozlov <nikita@beem-project.com>
Sat, 13 Mar 2010 20:04:27 +0100
changeset 708 915b3dde9851
parent 707 8ca359035c84
child 709 8701b07759e7
adding notification preference for invite notifications some checkstyles removing of unused provider package
src/com/beem/project/beem/BeemService.java
src/com/beem/project/beem/provider/Beem.java
src/com/beem/project/beem/provider/BeemDatabaseHelper.java
src/com/beem/project/beem/provider/ContactProvider.java
src/com/beem/project/beem/provider/UserProvider.java
src/com/beem/project/beem/provider/package-info.java
src/com/beem/project/beem/service/BeemChatManager.java
src/com/beem/project/beem/service/PrivacyListManagerAdapter.java
src/com/beem/project/beem/service/RosterAdapter.java
src/com/beem/project/beem/service/XmppConnectionAdapter.java
tools/checkstyle.xml
--- a/src/com/beem/project/beem/BeemService.java	Sat Mar 13 19:32:31 2010 +0100
+++ b/src/com/beem/project/beem/BeemService.java	Sat Mar 13 20:04:27 2010 +0100
@@ -434,7 +434,8 @@
 	    if (intentAction.equals(Intent.ACTION_SCREEN_OFF)) {
 		mOldMode = mConnection.getPreviousMode();
 		mOldStatus = mConnection.getPreviousStatus();
-		mConnection.changeStatus(Status.CONTACT_STATUS_AWAY, mSettings.getString("settings_away_message", "Away"));
+		mConnection.changeStatus(Status.CONTACT_STATUS_AWAY,
+		    mSettings.getString("settings_away_message", "Away"));
 	    } else if (intentAction.equals(Intent.ACTION_SCREEN_ON)) {
 		mConnection.changeStatus(mOldMode, mOldStatus);
 	    }
--- a/src/com/beem/project/beem/provider/Beem.java	Sat Mar 13 19:32:31 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,204 +0,0 @@
-/*
-    BEEM is a videoconference application on the Android Platform.
-
-    Copyright (C) 2009 by Frederic-Charles Barthelery,
-                          Jean-Manuel Da Silva,
-                          Nikita Kozlov,
-                          Philippe Lago,
-                          Jean Baptiste Vergely,
-                          Vincent Veronis.
-
-    This file is part of BEEM.
-
-    BEEM is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    BEEM is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
-
-    Please send bug reports with examples or suggestions to
-    contact@beem-project.com or http://dev.beem-project.com/
-
-    Epitech, hereby disclaims all copyright interest in the program "Beem"
-    written by Frederic-Charles Barthelery,
-               Jean-Manuel Da Silva,
-               Nikita Kozlov,
-               Philippe Lago,
-               Jean Baptiste Vergely,
-               Vincent Veronis.
-
-    Nicolas Sadirac, November 26, 2009
-    President of Epitech.
-
-    Flavien Astraud, November 26, 2009
-    Head of the EIP Laboratory.
-
-*/
-package com.beem.project.beem.provider;
-
-import android.net.Uri;
-import android.provider.BaseColumns;
-
-// TODO: Auto-generated Javadoc
-/**
- * Convenience definitions for BEEM's providers.
- */
-public final class Beem {
-
-    /**
-     * Contacts table.
-     */
-    public static final class Contacts implements BaseColumns {
-
-	/** The query used to create the table. */
-	public static final String QUERY_CREATE = "CREATE TABLE " + Beem.CONTACTS_TABLE_NAME + " (" + BaseColumns._ID
-	    + " INTEGER PRIMARY KEY AUTOINCREMENT," + Contacts.UID + " INTEGER, " + Contacts.JID + " INTEGER,"
-	    + Contacts.NICKNAME + " TEXT," + Contacts.ALIAS + " TEXT," + Contacts.DATE_CREATED + " INTEGER,"
-	    + Contacts.DATE_MODIFIED + " INTEGER" + ");";
-
-	/** The content:// style URL for Contacts table. */
-	public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/contacts");
-
-	/** The MIME type of {@link #CONTENT_URI} providing a directory of contacts. */
-	public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.beem.project.contact";
-
-	/** The MIME type of a {@link #CONTENT_URI} sub-directory of a single contact. */
-	public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.beem.project.contact";
-
-	/** The default sort order for this table. */
-	public static final String DEFAULT_SORT_ORDER = "nickname ASC";
-
-	/**
-     * The user id having the contact
-     * <P>
-     * Type: INTEGER
-     * </P>
-     * .
-     */
-	public static final String UID = "uid";
-
-	/**
-     * The JabberID of the contact
-     * <P>
-     * Type: INTEGER
-     * </P>
-     * .
-     */
-	public static final String JID = "jid";
-
-	/**
-     * The nickname of the contact
-     * <P>
-     * Type: TEXT
-     * </P>
-     * .
-     */
-	public static final String NICKNAME = "nickname";
-
-	/**
-     * The alias of the contact
-     * <P>
-     * Type: TEXT
-     * </P>
-     * .
-     */
-	public static final String ALIAS = "alias";
-
-	/**
-     * The timestamp for when the contact was created
-     * <P>
-     * Type: INTEGER (long from System.curentTimeMillis())
-     * </P>
-     * .
-     */
-	public static final String DATE_CREATED = "created";
-
-	/**
-     * The timestamp for when the contact was last modified
-     * <P>
-     * Type: INTEGER (long from System.curentTimeMillis())
-     * </P>
-     * .
-     */
-	public static final String DATE_MODIFIED = "modified";
-
-    }
-
-    /**
-     * Users table.
-     */
-    public static final class Users implements BaseColumns {
-
-	/** The query used to create the table. */
-	public static final String QUERY_CREATE = "CREATE TABLE " + Beem.USERS_TABLE_NAME + " (" + BaseColumns._ID
-	    + " INTEGER PRIMARY KEY AUTOINCREMENT," + Users.JUSERNAME + " TEXT," + Users.DATE_CREATED + " INTEGER,"
-	    + Users.DATE_MODIFIED + " INTEGER" + ");";
-
-	/** The content:// style URL for Contacts table. */
-	public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/users");
-
-	/** The MIME type of {@link #CONTENT_URI} providing a directory of users. */
-	public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.beem.project.user";
-
-	/** The MIME type of a {@link #CONTENT_URI} sub-directory of a single user. */
-	public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.beem.project.user";
-
-	/** The default sort order for this table. */
-	public static final String DEFAULT_SORT_ORDER = "_id ASC";
-
-	/**
-     * The Jabber username of the user
-     * <P>
-     * Type: TEXT
-     * </P>
-     * .
-     */
-	public static final String JUSERNAME = "username";
-
-	/**
-     * The timestamp for when the user was created
-     * <P>
-     * Type: INTEGER (long from System.curentTimeMillis())
-     * </P>
-     * .
-     */
-	public static final String DATE_CREATED = "created";
-
-	/**
-     * The timestamp for when the user was last modified
-     * <P>
-     * Type: INTEGER (long from System.curentTimeMillis())
-     * </P>
-     * .
-     */
-	public static final String DATE_MODIFIED = "modified";
-    }
-
-    /** AUTHORITY. */
-    public static final String AUTHORITY = "com.beem.project.provider";
-
-    /** DB Name. */
-    public static final String DB_NAME = "beem.db";
-
-    /** DB Version. */
-    public static final int DB_VERSION = 2;
-
-    /** Name of the users table. */
-    public static final String USERS_TABLE_NAME = "users";
-
-    /** Name of the contacts table. */
-    public static final String CONTACTS_TABLE_NAME = "contacts";
-
-    /**
-     * Constructor.
-     */
-    private Beem() {
-    }
-}
--- a/src/com/beem/project/beem/provider/BeemDatabaseHelper.java	Sat Mar 13 19:32:31 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
-    BEEM is a videoconference application on the Android Platform.
-
-    Copyright (C) 2009 by Frederic-Charles Barthelery,
-                          Jean-Manuel Da Silva,
-                          Nikita Kozlov,
-                          Philippe Lago,
-                          Jean Baptiste Vergely,
-                          Vincent Veronis.
-
-    This file is part of BEEM.
-
-    BEEM is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    BEEM is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
-
-    Please send bug reports with examples or suggestions to
-    contact@beem-project.com or http://dev.beem-project.com/
-
-    Epitech, hereby disclaims all copyright interest in the program "Beem"
-    written by Frederic-Charles Barthelery,
-               Jean-Manuel Da Silva,
-               Nikita Kozlov,
-               Philippe Lago,
-               Jean Baptiste Vergely,
-               Vincent Veronis.
-
-    Nicolas Sadirac, November 26, 2009
-    President of Epitech.
-
-    Flavien Astraud, November 26, 2009
-    Head of the EIP Laboratory.
-
-*/
-package com.beem.project.beem.provider;
-
-import android.content.Context;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteOpenHelper;
-import android.util.Log;
-
-// TODO: Auto-generated Javadoc
-/**
- * BeemDatabaseHelper class.
- * @author Jamu
- */
-public class BeemDatabaseHelper extends SQLiteOpenHelper {
-
-    private final String mTag;
-    private final String mTableName;
-    private final String mCreationQuery;
-
-    /**
-     * BeemDatabaseHelper class.
-     * @param context the context.
-     * @param tag the tag.
-     * @param tableName the tableName.
-     * @param creationQuery the creation query.
-     */
-    public BeemDatabaseHelper(final Context context, final String tag, final String tableName,
-	final String creationQuery) {
-	super(context, Beem.DB_NAME, null, Beem.DB_VERSION);
-
-	this.mTag = tag;
-	this.mTableName = tableName;
-	this.mCreationQuery = creationQuery;
-    }
-
-    /* (non-Javadoc)
-     * @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase)
-     */
-    @Override
-    public void onCreate(SQLiteDatabase db) {
-	db.execSQL(this.mCreationQuery);
-    }
-
-    /* (non-Javadoc)
-     * @see android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite.SQLiteDatabase, int, int)
-     */
-    @Override
-    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
-	Log.w(this.mTag, "Upgrading database from version " + oldVersion + " to " + newVersion
-	    + ", which will destroy all old data");
-	db.execSQL("DROP TABLE IF EXISTS " + this.mTableName + ";");
-	onCreate(db);
-    }
-}
--- a/src/com/beem/project/beem/provider/ContactProvider.java	Sat Mar 13 19:32:31 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,268 +0,0 @@
-/*
-    BEEM is a videoconference application on the Android Platform.
-
-    Copyright (C) 2009 by Frederic-Charles Barthelery,
-                          Jean-Manuel Da Silva,
-                          Nikita Kozlov,
-                          Philippe Lago,
-                          Jean Baptiste Vergely,
-                          Vincent Veronis.
-
-    This file is part of BEEM.
-
-    BEEM is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    BEEM is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
-
-    Please send bug reports with examples or suggestions to
-    contact@beem-project.com or http://dev.beem-project.com/
-
-    Epitech, hereby disclaims all copyright interest in the program "Beem"
-    written by Frederic-Charles Barthelery,
-               Jean-Manuel Da Silva,
-               Nikita Kozlov,
-               Philippe Lago,
-               Jean Baptiste Vergely,
-               Vincent Veronis.
-
-    Nicolas Sadirac, November 26, 2009
-    President of Epitech.
-
-    Flavien Astraud, November 26, 2009
-    Head of the EIP Laboratory.
-
-*/
-package com.beem.project.beem.provider;
-
-import java.util.HashMap;
-
-import android.content.ContentProvider;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.UriMatcher;
-import android.database.Cursor;
-import android.database.SQLException;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteQueryBuilder;
-import android.net.Uri;
-import android.provider.BaseColumns;
-import android.text.TextUtils;
-
-// TODO: Auto-generated Javadoc
-/**
- * ContactProvider class.
- * @author dasilvj
- */
-public class ContactProvider extends ContentProvider {
-
-    private static final String TAG = "ContactProvider";
-
-    private static HashMap<String, String> sContactsProjectionMap;
-
-    private static final int CONTACTS = 1;
-    private static final int CONTACT_ID = 2;
-
-    private static final UriMatcher S_URI_MATCHER;
-    static {
-	S_URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
-	S_URI_MATCHER.addURI(Beem.AUTHORITY, "contacts", CONTACTS);
-	S_URI_MATCHER.addURI(Beem.AUTHORITY, "contacts/#", CONTACT_ID);
-
-	sContactsProjectionMap = new HashMap<String, String>();
-	sContactsProjectionMap.put(BaseColumns._ID, BaseColumns._ID);
-	sContactsProjectionMap.put(Beem.Contacts.UID, Beem.Contacts.UID);
-	sContactsProjectionMap.put(Beem.Contacts.JID, Beem.Contacts.JID);
-	sContactsProjectionMap.put(Beem.Contacts.NICKNAME, Beem.Contacts.NICKNAME);
-	sContactsProjectionMap.put(Beem.Contacts.ALIAS, Beem.Contacts.ALIAS);
-	sContactsProjectionMap.put(Beem.Contacts.DATE_CREATED, Beem.Contacts.DATE_CREATED);
-	sContactsProjectionMap.put(Beem.Contacts.DATE_MODIFIED, Beem.Contacts.DATE_MODIFIED);
-    }
-
-    private BeemDatabaseHelper mOpenHelper;
-
-    /* (non-Javadoc)
-     * @see android.content.ContentProvider#delete(android.net.Uri, java.lang.String, java.lang.String[])
-     */
-    @Override
-    public int delete(Uri uri, String selection, String[] selectionArgs) {
-	SQLiteDatabase db = mOpenHelper.getWritableDatabase();
-	int count;
-
-	switch (S_URI_MATCHER.match(uri)) {
-	    case CONTACTS:
-		count = db.delete(Beem.CONTACTS_TABLE_NAME, selection, selectionArgs);
-		break;
-
-	    case CONTACT_ID:
-		String contactId = uri.getPathSegments().get(1);
-		count = db.delete(Beem.CONTACTS_TABLE_NAME, BaseColumns._ID + "=" + contactId
-		    + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""), selectionArgs);
-		break;
-
-	    default:
-		throw new IllegalArgumentException("Unknown URI " + uri);
-	}
-
-	getContext().getContentResolver().notifyChange(uri, null);
-	return count;
-    }
-
-    /* (non-Javadoc)
-     * @see android.content.ContentProvider#getType(android.net.Uri)
-     */
-    @Override
-    public String getType(Uri uri) {
-	switch (S_URI_MATCHER.match(uri)) {
-	    case CONTACTS:
-		return Beem.Contacts.CONTENT_TYPE;
-
-	    case CONTACT_ID:
-		return Beem.Contacts.CONTENT_ITEM_TYPE;
-
-	    default:
-		throw new IllegalArgumentException("Unknown URI " + uri);
-	}
-    }
-
-    /* (non-Javadoc)
-     * @see android.content.ContentProvider#insert(android.net.Uri, android.content.ContentValues)
-     */
-    @Override
-    public Uri insert(Uri uri, ContentValues initialValues) {
-	// Validate the requested uri
-	if (S_URI_MATCHER.match(uri) != CONTACTS) {
-	    throw new IllegalArgumentException("Unknown URI " + uri);
-	}
-
-	ContentValues values;
-	if (initialValues != null) {
-	    values = new ContentValues(initialValues);
-	} else {
-	    values = new ContentValues();
-	}
-
-	Long now = Long.valueOf(System.currentTimeMillis());
-
-	// Make sure that the fields are all set
-	if (!values.containsKey(Beem.Contacts.UID)) {
-	    // TODO :: Must check that the UID exists using UserProvider
-	    throw new SQLException("No UID specified. Failed to insert row into " + uri);
-	}
-
-	if (!values.containsKey(Beem.Contacts.JID)) {
-	    values.put(Beem.Contacts.JID, "");
-	}
-
-	if (!values.containsKey(Beem.Contacts.NICKNAME)) {
-	    values.put(Beem.Contacts.JID, "");
-	}
-
-	if (!values.containsKey(Beem.Contacts.ALIAS)) {
-	    values.put(Beem.Contacts.JID, "");
-	}
-
-	if (!values.containsKey(Beem.Contacts.DATE_CREATED)) {
-	    values.put(Beem.Contacts.DATE_CREATED, now);
-	}
-
-	if (!values.containsKey(Beem.Contacts.DATE_MODIFIED)) {
-	    values.put(Beem.Contacts.DATE_MODIFIED, now);
-	}
-
-	SQLiteDatabase db = mOpenHelper.getWritableDatabase();
-	long rowId = db.insert(Beem.CONTACTS_TABLE_NAME, BaseColumns._ID, values);
-	if (rowId > 0) {
-	    Uri contactUri = ContentUris.withAppendedId(Beem.Contacts.CONTENT_URI, rowId);
-	    getContext().getContentResolver().notifyChange(contactUri, null);
-	    return contactUri;
-	}
-
-	throw new SQLException("Failed to insert row into " + uri);
-    }
-
-    /* (non-Javadoc)
-     * @see android.content.ContentProvider#onCreate()
-     */
-    @Override
-    public boolean onCreate() {
-	mOpenHelper = new BeemDatabaseHelper(getContext(), TAG, Beem.CONTACTS_TABLE_NAME, Beem.Contacts.QUERY_CREATE);
-	return true;
-    }
-
-    /* (non-Javadoc)
-     * @see android.content.ContentProvider#query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String)
-     */
-    @Override
-    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
-	SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
-
-	switch (S_URI_MATCHER.match(uri)) {
-	    case CONTACTS:
-		qb.setTables(Beem.CONTACTS_TABLE_NAME);
-		qb.setProjectionMap(sContactsProjectionMap);
-		break;
-
-	    case CONTACT_ID:
-		qb.setTables(Beem.USERS_TABLE_NAME);
-		qb.setProjectionMap(sContactsProjectionMap);
-		qb.appendWhere(BaseColumns._ID + "=" + uri.getPathSegments().get(1));
-		break;
-
-	    default:
-		throw new IllegalArgumentException("Unknown URI " + uri);
-	}
-
-	// If no sort order is specified use the default
-	String orderBy;
-	if (TextUtils.isEmpty(sortOrder)) {
-	    orderBy = Beem.Contacts.DEFAULT_SORT_ORDER;
-	} else {
-	    orderBy = sortOrder;
-	}
-
-	// Get the database and run the query
-	SQLiteDatabase db = mOpenHelper.getReadableDatabase();
-	Cursor c = qb.query(db, projection, selection, selectionArgs, null, null, orderBy);
-
-	// Tell the cursor what uri to watch, so it knows when its source data
-	// changes
-	c.setNotificationUri(getContext().getContentResolver(), uri);
-	return c;
-    }
-
-    /* (non-Javadoc)
-     * @see android.content.ContentProvider#update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[])
-     */
-    @Override
-    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
-	SQLiteDatabase db = mOpenHelper.getWritableDatabase();
-	int count;
-
-	switch (S_URI_MATCHER.match(uri)) {
-	    case CONTACTS:
-		count = db.update(Beem.CONTACTS_TABLE_NAME, values, selection, selectionArgs);
-		break;
-
-	    case CONTACT_ID:
-		String contactId = uri.getPathSegments().get(1);
-		count = db.update(Beem.CONTACTS_TABLE_NAME, values, BaseColumns._ID + "=" + contactId
-		    + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""), selectionArgs);
-		break;
-
-	    default:
-		throw new IllegalArgumentException("Unknown URI " + uri);
-	}
-
-	getContext().getContentResolver().notifyChange(uri, null);
-	return count;
-    }
-}
--- a/src/com/beem/project/beem/provider/UserProvider.java	Sat Mar 13 19:32:31 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,252 +0,0 @@
-/*
-    BEEM is a videoconference application on the Android Platform.
-
-    Copyright (C) 2009 by Frederic-Charles Barthelery,
-                          Jean-Manuel Da Silva,
-                          Nikita Kozlov,
-                          Philippe Lago,
-                          Jean Baptiste Vergely,
-                          Vincent Veronis.
-
-    This file is part of BEEM.
-
-    BEEM is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    BEEM is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
-
-    Please send bug reports with examples or suggestions to
-    contact@beem-project.com or http://dev.beem-project.com/
-
-    Epitech, hereby disclaims all copyright interest in the program "Beem"
-    written by Frederic-Charles Barthelery,
-               Jean-Manuel Da Silva,
-               Nikita Kozlov,
-               Philippe Lago,
-               Jean Baptiste Vergely,
-               Vincent Veronis.
-
-    Nicolas Sadirac, November 26, 2009
-    President of Epitech.
-
-    Flavien Astraud, November 26, 2009
-    Head of the EIP Laboratory.
-
-*/
-package com.beem.project.beem.provider;
-
-import java.util.HashMap;
-
-import android.content.ContentProvider;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.UriMatcher;
-import android.database.Cursor;
-import android.database.SQLException;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteQueryBuilder;
-import android.net.Uri;
-import android.provider.BaseColumns;
-import android.text.TextUtils;
-
-// TODO: Auto-generated Javadoc
-/**
- * UserProvider class.
- * @author Jamu
- */
-public class UserProvider extends ContentProvider {
-
-    private static final String TAG = "UserProvider";
-
-    private static HashMap<String, String> sUsersProjectionMap;
-
-    private static final int USERS = 1;
-    private static final int USER_ID = 2;
-
-    private static final UriMatcher S_URI_MATCHER;
-    static {
-	S_URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
-	S_URI_MATCHER.addURI(Beem.AUTHORITY, "users", USERS);
-	S_URI_MATCHER.addURI(Beem.AUTHORITY, "users/#", USER_ID);
-
-	sUsersProjectionMap = new HashMap<String, String>();
-	sUsersProjectionMap.put(BaseColumns._ID, BaseColumns._ID);
-	sUsersProjectionMap.put(Beem.Users.JUSERNAME, Beem.Users.JUSERNAME);
-	sUsersProjectionMap.put(Beem.Users.DATE_CREATED, Beem.Users.DATE_CREATED);
-	sUsersProjectionMap.put(Beem.Users.DATE_MODIFIED, Beem.Users.DATE_MODIFIED);
-    }
-
-    private BeemDatabaseHelper mOpenHelper;
-
-    /* (non-Javadoc)
-     * @see android.content.ContentProvider#delete(android.net.Uri, java.lang.String, java.lang.String[])
-     */
-    @Override
-    public int delete(Uri uri, String selection, String[] selectionArgs) {
-	SQLiteDatabase db = mOpenHelper.getWritableDatabase();
-	int count;
-
-	switch (S_URI_MATCHER.match(uri)) {
-	    case USERS:
-		count = db.delete(Beem.USERS_TABLE_NAME, selection, selectionArgs);
-		break;
-
-	    case USER_ID:
-		String userID = uri.getPathSegments().get(1);
-		count = db.delete(Beem.USERS_TABLE_NAME, BaseColumns._ID + "=" + userID
-		    + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""), selectionArgs);
-		break;
-
-	    default:
-		throw new IllegalArgumentException("Unknown URI " + uri);
-	}
-
-	getContext().getContentResolver().notifyChange(uri, null);
-	return count;
-    }
-
-    /* (non-Javadoc)
-     * @see android.content.ContentProvider#getType(android.net.Uri)
-     */
-    @Override
-    public String getType(Uri uri) {
-	switch (S_URI_MATCHER.match(uri)) {
-	    case USERS:
-		return Beem.Users.CONTENT_TYPE;
-
-	    case USER_ID:
-		return Beem.Users.CONTENT_ITEM_TYPE;
-
-	    default:
-		throw new IllegalArgumentException("Unknown URI " + uri);
-	}
-    }
-
-    /* (non-Javadoc)
-     * @see android.content.ContentProvider#insert(android.net.Uri, android.content.ContentValues)
-     */
-    @Override
-    public Uri insert(Uri uri, ContentValues initialValues) {
-	// Validate the requested uri
-	if (S_URI_MATCHER.match(uri) != USERS) {
-	    throw new IllegalArgumentException("Unknown URI " + uri);
-	}
-
-	ContentValues values;
-	if (initialValues != null) {
-	    values = new ContentValues(initialValues);
-	} else {
-	    values = new ContentValues();
-	}
-
-	Long now = Long.valueOf(System.currentTimeMillis());
-
-	// Make sure that the fields are all set
-	if (!values.containsKey(Beem.Users.JUSERNAME)) {
-	    throw new SQLException("No JUSERNAME specified. Failed to insert row into " + uri);
-	}
-
-	if (!values.containsKey(Beem.Users.DATE_CREATED)) {
-	    values.put(Beem.Users.DATE_CREATED, now);
-	}
-
-	if (!values.containsKey(Beem.Users.DATE_MODIFIED)) {
-	    values.put(Beem.Users.DATE_MODIFIED, now);
-	}
-
-	SQLiteDatabase db = mOpenHelper.getWritableDatabase();
-	long rowId = db.insert(Beem.USERS_TABLE_NAME, BaseColumns._ID, values);
-	if (rowId > 0) {
-	    Uri userUri = ContentUris.withAppendedId(Beem.Users.CONTENT_URI, rowId);
-	    getContext().getContentResolver().notifyChange(userUri, null);
-	    return userUri;
-	}
-
-	throw new SQLException("Failed to insert row into " + uri);
-    }
-
-    /* (non-Javadoc)
-     * @see android.content.ContentProvider#onCreate()
-     */
-    @Override
-    public boolean onCreate() {
-	mOpenHelper = new BeemDatabaseHelper(getContext(), TAG, Beem.USERS_TABLE_NAME, Beem.Users.QUERY_CREATE);
-	return true;
-    }
-
-    /* (non-Javadoc)
-     * @see android.content.ContentProvider#query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String)
-     */
-    @Override
-    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
-	SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
-
-	switch (S_URI_MATCHER.match(uri)) {
-	    case USERS:
-		qb.setTables(Beem.USERS_TABLE_NAME);
-		qb.setProjectionMap(sUsersProjectionMap);
-		break;
-
-	    case USER_ID:
-		qb.setTables(Beem.USERS_TABLE_NAME);
-		qb.setProjectionMap(sUsersProjectionMap);
-		qb.appendWhere(BaseColumns._ID + "=" + uri.getPathSegments().get(1));
-		break;
-
-	    default:
-		throw new IllegalArgumentException("Unknown URI " + uri);
-	}
-
-	// If no sort order is specified use the default
-	String orderBy;
-	if (TextUtils.isEmpty(sortOrder)) {
-	    orderBy = Beem.Users.DEFAULT_SORT_ORDER;
-	} else {
-	    orderBy = sortOrder;
-	}
-
-	// Get the database and run the query
-	SQLiteDatabase db = mOpenHelper.getReadableDatabase();
-	Cursor c = qb.query(db, projection, selection, selectionArgs, null, null, orderBy);
-
-	// Tell the cursor what uri to watch, so it knows when its source data
-	// changes
-	c.setNotificationUri(getContext().getContentResolver(), uri);
-	return c;
-    }
-
-    /* (non-Javadoc)
-     * @see android.content.ContentProvider#update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[])
-     */
-    @Override
-    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
-	SQLiteDatabase db = mOpenHelper.getWritableDatabase();
-	int count;
-
-	switch (S_URI_MATCHER.match(uri)) {
-	    case USERS:
-		count = db.update(Beem.USERS_TABLE_NAME, values, selection, selectionArgs);
-		break;
-
-	    case USER_ID:
-		String userId = uri.getPathSegments().get(1);
-		count = db.update(Beem.USERS_TABLE_NAME, values, BaseColumns._ID + "=" + userId
-		    + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""), selectionArgs);
-		break;
-
-	    default:
-		throw new IllegalArgumentException("Unknown URI " + uri);
-	}
-
-	getContext().getContentResolver().notifyChange(uri, null);
-	return count;
-    }
-}
--- a/src/com/beem/project/beem/provider/package-info.java	Sat Mar 13 19:32:31 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-    BEEM is a videoconference application on the Android Platform.
-
-    Copyright (C) 2009 by Frederic-Charles Barthelery,
-                          Jean-Manuel Da Silva,
-                          Nikita Kozlov,
-                          Philippe Lago,
-                          Jean Baptiste Vergely,
-                          Vincent Veronis.
-
-    This file is part of BEEM.
-
-    BEEM is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    BEEM is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
-
-    Please send bug reports with examples or suggestions to
-    contact@beem-project.com or http://dev.beem-project.com/
-
-    Epitech, hereby disclaims all copyright interest in the program "Beem"
-    written by Frederic-Charles Barthelery,
-               Jean-Manuel Da Silva,
-               Nikita Kozlov,
-               Philippe Lago,
-               Jean Baptiste Vergely,
-               Vincent Veronis.
-
-    Nicolas Sadirac, November 26, 2009
-    President of Epitech.
-
-    Flavien Astraud, November 26, 2009
-    Head of the EIP Laboratory.
-
-*/
-
-/**
- * This package contains classes concerning hypothetical providers.
- */
-package com.beem.project.beem.provider;
-
--- a/src/com/beem/project/beem/service/BeemChatManager.java	Sat Mar 13 19:32:31 2010 +0100
+++ b/src/com/beem/project/beem/service/BeemChatManager.java	Sat Mar 13 20:04:27 2010 +0100
@@ -40,7 +40,7 @@
     Flavien Astraud, November 26, 2009
     Head of the EIP Laboratory.
 
- */
+*/
 package com.beem.project.beem.service;
 
 import java.util.ArrayList;
@@ -76,110 +76,13 @@
  * @author darisk
  */
 public class BeemChatManager extends IChatManager.Stub {
-
-    /**
-     * A listener for all the chat creation event that happens on the connection.
-     * @author darisk
-     */
-    private class ChatListener extends IMessageListener.Stub implements ChatManagerListener {
-
-	/**
-	 * Constructor.
-	 */
-	public ChatListener() {
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public void chatCreated(Chat chat, boolean locally) {
-	    IChat newchat = getChat(chat);
-	    Log.d(TAG, "Chat" + chat.toString() + " created locally " + locally + "with " + chat.getParticipant());
-	    try {
-		newchat.addMessageListener(mChatListener);
-		final int n = mRemoteChatCreationListeners.beginBroadcast();
-
-		for (int i = 0; i < n; i++) {
-		    IChatManagerListener listener = mRemoteChatCreationListeners.getBroadcastItem(i);
-		    listener.chatCreated(newchat, locally);
-		}
-		mRemoteChatCreationListeners.finishBroadcast();
-	    } catch (RemoteException e) {
-		// The RemoteCallbackList will take care of removing the
-		// dead listeners.
-		Log.w(TAG, " Error while triggering remote connection listeners in chat creation", e);
-	    }
-	}
-
-	/**
-	 * Create the PendingIntent to launch our activity if the user select this chat notification.
-	 * @param chat A ChatAdapter instance
-	 * @return A Chat activity PendingIntent
-	 */
-	private PendingIntent makeChatIntent(IChat chat) {
-	    Intent chatIntent = new Intent(mService, com.beem.project.beem.ui.Chat.class);
-	    chatIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP);
-	    try {
-		chatIntent.setData(chat.getParticipant().toUri());
-	    } catch (RemoteException e) {
-		Log.e(TAG, e.getMessage());
-	    }
-	    PendingIntent contentIntent = PendingIntent.getActivity(mService, 0, chatIntent,
-		PendingIntent.FLAG_UPDATE_CURRENT);
-	    return contentIntent;
-	}
-
-	/**
-	 * Set a notification of a new chat.
-	 * @param chat The chat to access by the notification
-	 */
-	private void notifyNewChat(IChat chat) {
-	    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(mService);
-	    try {
-		CharSequence tickerText = mService.getBind().getRoster().getContact(chat.getParticipant().getJID())
-		.getName();
-		Notification notification = new Notification(android.R.drawable.stat_notify_chat, tickerText, System
-		    .currentTimeMillis());
-		if (!pref.getBoolean("settings_notification_disable_vibrate", true))
-		    notification.defaults -= Notification.DEFAULT_VIBRATE; 
-		notification.flags = Notification.FLAG_AUTO_CANCEL;
-		notification.setLatestEventInfo(mService, tickerText, mService
-		    .getString(R.string.BeemChatManagerNewMessage), makeChatIntent(chat));
-		String ringtoneStr = pref.getString("settings_notification_snd", "");
-		notification.sound = Uri.parse(ringtoneStr);
-		mService.sendNotification(chat.getParticipant().getJID().hashCode(), notification);
-	    } catch (RemoteException e) {
-		Log.e(TAG, e.getMessage());
-	    }
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public void processMessage(IChat chat, Message message) {
-	    try {
-		if (!chat.isOpen() && message.getBody() != null) {
-		    if (chat instanceof ChatAdapter)
-			mChats.put(chat.getParticipant().getJID(), (ChatAdapter) chat);
-		    notifyNewChat(chat);
-		}
-	    } catch (RemoteException e) {
-		Log.w(TAG, e.getMessage());
-	    }
-	}
-
-	@Override
-	public void stateChanged(IChat chat) { }
-    }
-
     /** Tag to use with log methods. */
     public static final String TAG = "BeemChatManager";
     private final ChatManager mAdaptee;
     private final Map<String, ChatAdapter> mChats = new HashMap<String, ChatAdapter>();
     private final ChatListener mChatListener = new ChatListener();
-    private final RemoteCallbackList<IChatManagerListener> mRemoteChatCreationListeners = new RemoteCallbackList<IChatManagerListener>();
+    private final RemoteCallbackList<IChatManagerListener> mRemoteChatCreationListeners =
+	new RemoteCallbackList<IChatManagerListener>();
     private final BeemService mService;
 
     /**
@@ -312,4 +215,101 @@
 	    mRemoteChatCreationListeners.unregister(listener);
     }
 
+    /**
+     * A listener for all the chat creation event that happens on the connection.
+     * @author darisk
+     */
+    private class ChatListener extends IMessageListener.Stub implements ChatManagerListener {
+
+	/**
+	 * Constructor.
+	 */
+	public ChatListener() {
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public void chatCreated(Chat chat, boolean locally) {
+	    IChat newchat = getChat(chat);
+	    Log.d(TAG, "Chat" + chat.toString() + " created locally " + locally + "with " + chat.getParticipant());
+	    try {
+		newchat.addMessageListener(mChatListener);
+		final int n = mRemoteChatCreationListeners.beginBroadcast();
+
+		for (int i = 0; i < n; i++) {
+		    IChatManagerListener listener = mRemoteChatCreationListeners.getBroadcastItem(i);
+		    listener.chatCreated(newchat, locally);
+		}
+		mRemoteChatCreationListeners.finishBroadcast();
+	    } catch (RemoteException e) {
+		// The RemoteCallbackList will take care of removing the
+		// dead listeners.
+		Log.w(TAG, " Error while triggering remote connection listeners in chat creation", e);
+	    }
+	}
+
+	/**
+	 * Create the PendingIntent to launch our activity if the user select this chat notification.
+	 * @param chat A ChatAdapter instance
+	 * @return A Chat activity PendingIntent
+	 */
+	private PendingIntent makeChatIntent(IChat chat) {
+	    Intent chatIntent = new Intent(mService, com.beem.project.beem.ui.Chat.class);
+	    chatIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+	    try {
+		chatIntent.setData(chat.getParticipant().toUri());
+	    } catch (RemoteException e) {
+		Log.e(TAG, e.getMessage());
+	    }
+	    PendingIntent contentIntent = PendingIntent.getActivity(mService, 0, chatIntent,
+		PendingIntent.FLAG_UPDATE_CURRENT);
+	    return contentIntent;
+	}
+
+	/**
+	 * Set a notification of a new chat.
+	 * @param chat The chat to access by the notification
+	 */
+	private void notifyNewChat(IChat chat) {
+	    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(mService);
+	    try {
+		CharSequence tickerText = mService.getBind().getRoster().getContact(chat.getParticipant().getJID())
+		.getName();
+		Notification notification = new Notification(android.R.drawable.stat_notify_chat, tickerText, System
+		    .currentTimeMillis());
+		if (!pref.getBoolean("settings_notification_disable_vibrate", true))
+		    notification.defaults -= Notification.DEFAULT_VIBRATE;
+		notification.flags = Notification.FLAG_AUTO_CANCEL;
+		notification.setLatestEventInfo(mService, tickerText, mService
+		    .getString(R.string.BeemChatManagerNewMessage), makeChatIntent(chat));
+		String ringtoneStr = pref.getString("settings_notification_snd", "");
+		notification.sound = Uri.parse(ringtoneStr);
+		mService.sendNotification(chat.getParticipant().getJID().hashCode(), notification);
+	    } catch (RemoteException e) {
+		Log.e(TAG, e.getMessage());
+	    }
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public void processMessage(final IChat chat, Message message) {
+	    try {
+		if (!chat.isOpen() && message.getBody() != null) {
+		    if (chat instanceof ChatAdapter) {
+			mChats.put(chat.getParticipant().getJID(), (ChatAdapter) chat);
+		    }
+		    notifyNewChat(chat);
+		}
+	    } catch (RemoteException e) {
+		Log.w(TAG, e.getMessage());
+	    }
+	}
+
+	@Override
+	public void stateChanged(final IChat chat) { }
+    }
 }
--- a/src/com/beem/project/beem/service/PrivacyListManagerAdapter.java	Sat Mar 13 19:32:31 2010 +0100
+++ b/src/com/beem/project/beem/service/PrivacyListManagerAdapter.java	Sat Mar 13 20:04:27 2010 +0100
@@ -71,7 +71,8 @@
 
     private final PrivacyListManager mPrivacyListManager;
 
-    private final RemoteCallbackList<IPrivacyListListener> mPrivacyListListeners = new RemoteCallbackList<IPrivacyListListener>();
+    private final RemoteCallbackList<IPrivacyListListener> mPrivacyListListeners =
+	new RemoteCallbackList<IPrivacyListListener>();
     private final PrivacyListListenerAdapter mPrivacyListListener = new PrivacyListListenerAdapter();
 
     /**
--- a/src/com/beem/project/beem/service/RosterAdapter.java	Sat Mar 13 19:32:31 2010 +0100
+++ b/src/com/beem/project/beem/service/RosterAdapter.java	Sat Mar 13 20:04:27 2010 +0100
@@ -72,7 +72,8 @@
 
     private static final String TAG = "RosterAdapter";
     private final Roster mAdaptee;
-    private final RemoteCallbackList<IBeemRosterListener> mRemoteRosListeners = new RemoteCallbackList<IBeemRosterListener>();
+    private final RemoteCallbackList<IBeemRosterListener> mRemoteRosListeners =
+	new RemoteCallbackList<IBeemRosterListener>();
     private final Map<Integer, String> mDefaultStatusMessages;
     private final RosterListenerAdapter mRosterListener = new RosterListenerAdapter();
 
--- a/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Sat Mar 13 19:32:31 2010 +0100
+++ b/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Sat Mar 13 20:04:27 2010 +0100
@@ -61,8 +61,10 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.net.Uri;
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
+import android.preference.PreferenceManager;
 import android.util.Log;
 
 import com.beem.project.beem.BeemService;
@@ -618,17 +620,21 @@
 	    if (p.getType() != Presence.Type.subscribe)
 		return;
 	    String from = p.getFrom();
-	    Notification notif = new Notification(android.R.drawable.stat_notify_more, mService.getString(
+	    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(mService);
+	    Notification notification = new Notification(android.R.drawable.stat_notify_more, mService.getString(
 		R.string.AcceptContactRequest, from), System.currentTimeMillis());
-	    notif.defaults = Notification.DEFAULT_ALL;
-	    notif.flags = Notification.FLAG_AUTO_CANCEL;
+	    if (!pref.getBoolean("settings_notification_disable_vibrate", true))
+		notification.defaults -= Notification.DEFAULT_VIBRATE;
+	    notification.flags = Notification.FLAG_AUTO_CANCEL;
 	    Intent intent = new Intent(mService, Subscription.class);
 	    intent.putExtra("from", from);
-	    notif.setLatestEventInfo(mService, from, mService
+	    String ringtoneStr = pref.getString("settings_notification_snd", "");
+	    notification.sound = Uri.parse(ringtoneStr);
+	    notification.setLatestEventInfo(mService, from, mService
 		.getString(R.string.AcceptContactRequestFrom, from), PendingIntent.getActivity(mService, 0,
 		    intent, PendingIntent.FLAG_ONE_SHOT));
 	    int id = p.hashCode();
-	    mService.sendNotification(id, notif);
+	    mService.sendNotification(id, notification);
 	}
     }
 
--- a/tools/checkstyle.xml	Sat Mar 13 19:32:31 2010 +0100
+++ b/tools/checkstyle.xml	Sat Mar 13 20:04:27 2010 +0100
@@ -202,7 +202,7 @@
   </module>
   <module name="RegexpHeader">
     <property name="severity" value="error"/>
-    <property name="headerFile" value="tools/JavaHeaderCheck.regex"/>
+    <property name="headerFile" value="${basedir}/tools/JavaHeaderCheck.regex"/>
     <property name="multiLines" value="5, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38"/>
   </module>
 </module>