Android Open Source - Look Look S Q L Content Provider






From Project

Back to project page Look.

License

The source code is released under:

====================== LOOK! LICENSING TERMS ====================== look! is licensed under the BSD 3-Clause (also known as "BSD New" or "BSD Simplified"), as follows: Copyright (c) 2010-2012, Look...

If you think the Android project Look listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
*-----------------------------------------------------------------------------
* Copyright (c) 2012, Look! Development Team
* All rights reserved./* w  w  w  .j a v  a2 s  .c o  m*/
*
* Distributed under the terms of the BSD Simplified License.
*
* The full license is in the LICENSE file, distributed with this software.
*-----------------------------------------------------------------------------
*/
package es.ucm.look.data.local.contentprovider.sql;

import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
import es.ucm.look.data.remote.LookProperties;

/**
 * This class implements the Content Provider, is interacts directly with the
 * database, has the methods Insert, Query, Update and Delete
 * 
 * @author Sergio
 * 
 */
public abstract class LookSQLContentProvider extends ContentProvider {

  /**
   * Database name
   */
  private String dbName;

  /**
   * Main name to form the URI of the Content Provider
   */
  private String authorityPart;

  // ------------------Set the constants--------------------------

  // TABLES
  private static final String URI_FROM_MAINTABLE = "lookMain";
  private static final String URI_FROM_PROPERTIESTABLE = "lookProperties";

  // URI
  public static final String CONTENT_PREFIX = "content://";

  public static Uri MAIN_CONTENT_URI;

  public static Uri PROPERTIES_CONTENT_URI;

  public static final int CODE_ALL_ITEMS = 1;

  public static final int CODE_SINGLE_ITEM = 2;

  public static final String MIME_TYPE_ALL_ITEMS = "vnd.android.cursor.dir/vnd.es.ucm.look.data.contentprovider.sql";

  public static final String MIME_TYPE_SINGLE_ITEM = "vnd.android.cursor.item/vnd.es.ucm.look.data.contentprovider.sql";

  public static UriMatcher MAIN_URI_MATCHER;

  // INFO
  public static final String INVALID_URI_MESSAGE = "Invalid Uri: ";

  private static final String EQUALS = "=";

  /**
   * Database SQLite of Android
   */
  private SQLiteDatabase database;

  /**
   * Reference to {@link LookSQLHelper}
   */
  private LookSQLHelper dbHelper;

  /**
   * Class constructor, it need to the database name and the main name for the
   * URI (resources)
   * 
   * @param dbName
   *       String with the Database name 
   * @param authorityPart
   *       
   */
  public LookSQLContentProvider(String dbName, String authorityPart) {
    this.dbName = dbName;
    this.authorityPart = authorityPart;
    init();
  }

  // Initialized URI_MATCHER
  private void init() {
    MAIN_CONTENT_URI = Uri.parse(CONTENT_PREFIX + authorityPart + "/"
        + URI_FROM_MAINTABLE);
    PROPERTIES_CONTENT_URI = Uri.parse(CONTENT_PREFIX + authorityPart + "/"
        + URI_FROM_PROPERTIESTABLE);
    MAIN_URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
    MAIN_URI_MATCHER.addURI(authorityPart, "lookMain", CODE_ALL_ITEMS);
    MAIN_URI_MATCHER.addURI(authorityPart, "lookMain/#", CODE_SINGLE_ITEM);

    PROPERTIES_URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
    PROPERTIES_URI_MATCHER.addURI(authorityPart, "lookProperties",
        CODE_ALL_ITEMS);
    PROPERTIES_URI_MATCHER.addURI(authorityPart, "lookProperties/#",
        CODE_SINGLE_ITEM);
  }

  public static UriMatcher PROPERTIES_URI_MATCHER;

  // METHODS

  @Override
  public boolean onCreate() {
    dbHelper = new LookSQLHelper(getContext(), dbName);
    database = dbHelper.getWritableDatabase();
    return database != null && database.isOpen();
  }

  @Override
  public void onLowMemory() {
    super.onLowMemory(); /* The database is closed if more memory is needed */
    this.dbHelper.close();
  }

  /**
   * Get the SQL associated
   * 
   * @return
   */
  private SQLiteDatabase getOrOpenDatabase() {
    SQLiteDatabase db = null;
    if (this.database != null && database.isOpen()) {
      db = this.database;
    } else {
      db = dbHelper.getWritableDatabase();
    }
    return db;
  }

  @Override
  public int delete(Uri uri, String where, String[] whereArgs) {
    int rowsAffected = 0;

    String getTable = uri.getPathSegments().get(0);

    if (getTable.contentEquals(URI_FROM_MAINTABLE)) {

      switch (MAIN_URI_MATCHER.match(uri)) {
      case CODE_ALL_ITEMS:
        rowsAffected = this.getOrOpenDatabase().delete(
            LookSQLHelper.MAIN_TABLENAME, where, whereArgs);
        break;
      case CODE_SINGLE_ITEM:
        String singleRecordId = uri.getPathSegments().get(1);
        rowsAffected = this.getOrOpenDatabase().delete(
            LookSQLHelper.MAIN_TABLENAME,
            LookProperties.FIELD_ID + EQUALS + singleRecordId,
            whereArgs);
        break;
      default:
        throw new IllegalArgumentException(INVALID_URI_MESSAGE + uri);
      }

    } else if (getTable.contentEquals(URI_FROM_PROPERTIESTABLE)) {

      switch (PROPERTIES_URI_MATCHER.match(uri)) {
      case CODE_ALL_ITEMS:
        rowsAffected = this.getOrOpenDatabase().delete(
            LookSQLHelper.PROPERTIES_TABLENAME, where, whereArgs);
        break;
      case CODE_SINGLE_ITEM:
        // TODO comprobar
        String singleRecordId = uri.getPathSegments().get(1);
        rowsAffected = this.getOrOpenDatabase().delete(
            LookSQLHelper.PROPERTIES_TABLENAME,
            LookProperties.FIELD_ID + EQUALS + singleRecordId,
            whereArgs);
        break;
      default:
        throw new IllegalArgumentException(INVALID_URI_MESSAGE + uri);
      }
    }

    return rowsAffected;
  }

  // TODO
  @Override
  public String getType(Uri uri) {
    switch (MAIN_URI_MATCHER.match(uri)) {
    case CODE_ALL_ITEMS:
      return MIME_TYPE_ALL_ITEMS;
    case CODE_SINGLE_ITEM:
      return MIME_TYPE_SINGLE_ITEM;
    default:
      throw new IllegalArgumentException(INVALID_URI_MESSAGE + uri);
    }
  }

  @Override
  public Uri insert(Uri arg0, ContentValues arg1) {

    String getTable = arg0.getPathSegments().get(0);

    if (getTable.contentEquals(URI_FROM_MAINTABLE)) {

      long rowID = getOrOpenDatabase().insert(
          LookSQLHelper.MAIN_TABLENAME, null, arg1);
      Uri newRecordUri = null;
      switch (MAIN_URI_MATCHER.match(arg0)) {
      case CODE_ALL_ITEMS:
        if (rowID > 0) {
          newRecordUri = ContentUris.withAppendedId(MAIN_CONTENT_URI,
              rowID);
        }
        break;
      default:
        throw new IllegalArgumentException(INVALID_URI_MESSAGE + arg0);
      }

      return newRecordUri;

    } else if (getTable.contentEquals(URI_FROM_PROPERTIESTABLE)) {

      long rowID = getOrOpenDatabase().insert(
          LookSQLHelper.PROPERTIES_TABLENAME, null, arg1);
      Uri newRecordUri = null;
      switch (PROPERTIES_URI_MATCHER.match(arg0)) {
      case CODE_ALL_ITEMS:
        if (rowID > 0) {
          newRecordUri = ContentUris.withAppendedId(
              PROPERTIES_CONTENT_URI, rowID);
        }
        break;
      default:
        throw new IllegalArgumentException(INVALID_URI_MESSAGE + arg0);
      }
      return newRecordUri;

    }

    return null;
  }

  @Override
  public Cursor query(Uri uri, String[] projection, String selection,
      String[] selectionArgs, String sort) {
    Cursor cursor = null;
    SQLiteQueryBuilder qBuilder = new SQLiteQueryBuilder();

    String getTable = uri.getPathSegments().get(0);

    if (getTable.contentEquals(URI_FROM_MAINTABLE)) {

      switch (MAIN_URI_MATCHER.match(uri)) {
      case CODE_SINGLE_ITEM:
        String id = uri.getPathSegments().get(1);
        qBuilder.appendWhere(LookProperties.FIELD_ID + EQUALS + id);
        break;
      case UriMatcher.NO_MATCH:
        throw new IllegalArgumentException(INVALID_URI_MESSAGE + uri);
      }

      qBuilder.setTables(LookSQLHelper.MAIN_TABLENAME);

    } else if (getTable.contentEquals(URI_FROM_PROPERTIESTABLE)) {

      qBuilder.setTables(LookSQLHelper.PROPERTIES_TABLENAME);
    }
    cursor = qBuilder.query(getOrOpenDatabase(), projection, selection,
        selectionArgs, null, null, null);
    return cursor;
  }

  @Override
  public int update(Uri uri, ContentValues values, String where,
      String[] whereArgs) {
    int rowsAffected = 0;

    String getTable = uri.getPathSegments().get(0);

    if (getTable.contentEquals(URI_FROM_MAINTABLE)) {

      String recordId = null;
      switch (MAIN_URI_MATCHER.match(uri)) {
      case CODE_ALL_ITEMS:

        rowsAffected = getOrOpenDatabase().update(
            LookSQLHelper.MAIN_TABLENAME, values, where, whereArgs);
        break;
      case CODE_SINGLE_ITEM:
        recordId = uri.getPathSegments().get(1);
        rowsAffected = getOrOpenDatabase().update(
            LookSQLHelper.MAIN_TABLENAME, values,
            LookProperties.FIELD_ID + EQUALS + recordId, whereArgs);
        break;
      default:
        throw new IllegalArgumentException(INVALID_URI_MESSAGE + uri);
      }

    } else if (getTable.contentEquals(URI_FROM_PROPERTIESTABLE)) {
      // String recordId = null;
      switch (PROPERTIES_URI_MATCHER.match(uri)) {
      case CODE_ALL_ITEMS:

        rowsAffected = getOrOpenDatabase().update(
            LookSQLHelper.PROPERTIES_TABLENAME, values, where,
            whereArgs);
        break;
      case CODE_SINGLE_ITEM:
        // recordId = uri.getPathSegments().get(1);
        rowsAffected = getOrOpenDatabase().update(
            LookSQLHelper.PROPERTIES_TABLENAME, values, null,
            whereArgs);// TODO
        break;
      default:
        throw new IllegalArgumentException(INVALID_URI_MESSAGE + uri);
      }
    }
    return rowsAffected;
  }

}




Java Source Code List

es.ucm.look.ar.LookAR.java
es.ucm.look.ar.Preview.java
es.ucm.look.ar.ar2D.AR2D.java
es.ucm.look.ar.ar2D.Drawable2D.java
es.ucm.look.ar.ar2D.HUDElement.java
es.ucm.look.ar.ar2D.drawables.Circle2D.java
es.ucm.look.ar.ar2D.drawables.Image2D.java
es.ucm.look.ar.ar2D.drawables.Text2D.java
es.ucm.look.ar.ar3D.Drawable3D.java
es.ucm.look.ar.ar3D.Renderer3D.java
es.ucm.look.ar.ar3D.core.Color4.java
es.ucm.look.ar.ar3D.core.TextureFactory.java
es.ucm.look.ar.ar3D.core.camera.Camera3D.java
es.ucm.look.ar.ar3D.core.camera.OrientedCamera.java
es.ucm.look.ar.ar3D.core.drawables.DrawablesDataBase.java
es.ucm.look.ar.ar3D.core.drawables.Entity3D.java
es.ucm.look.ar.ar3D.core.drawables.Mesh3D.java
es.ucm.look.ar.ar3D.core.drawables.primitives.CirclePrimitive.java
es.ucm.look.ar.ar3D.core.drawables.primitives.Cube.java
es.ucm.look.ar.ar3D.core.drawables.primitives.Grid.java
es.ucm.look.ar.ar3D.core.drawables.primitives.LinePrimitive.java
es.ucm.look.ar.ar3D.core.drawables.primitives.LinesLoopPrimitive.java
es.ucm.look.ar.ar3D.core.drawables.primitives.ObjMesh3D.java
es.ucm.look.ar.ar3D.core.drawables.primitives.PointPrimitive.java
es.ucm.look.ar.ar3D.core.drawables.primitives.Ring.java
es.ucm.look.ar.ar3D.core.drawables.primitives.SquarePrimitive.java
es.ucm.look.ar.ar3D.core.drawables.primitives.TrianglePrimitive.java
es.ucm.look.ar.ar3D.core.drawables.primitives.extra.ImagePrimitive.java
es.ucm.look.ar.ar3D.parser.MeshObjParser.java
es.ucm.look.ar.hud.ActionListener.java
es.ucm.look.ar.hud.BasicHud.java
es.ucm.look.ar.hud.Button.java
es.ucm.look.ar.hud.HUD.java
es.ucm.look.ar.listeners.CameraListener.java
es.ucm.look.ar.listeners.TouchListener.java
es.ucm.look.ar.math.collision.Armature.java
es.ucm.look.ar.math.collision.SphericalArmature.java
es.ucm.look.ar.math.collision.SquareArmature.java
es.ucm.look.ar.math.collision.debug.DebugArmature.java
es.ucm.look.ar.math.collision.debug.SphericalDebugArmature.java
es.ucm.look.ar.math.collision.debug.SquareDebugArmature.java
es.ucm.look.ar.math.geom.Matrix3.java
es.ucm.look.ar.math.geom.Plane.java
es.ucm.look.ar.math.geom.Point2.java
es.ucm.look.ar.math.geom.Point3.java
es.ucm.look.ar.math.geom.Ray.java
es.ucm.look.ar.math.geom.Triangle.java
es.ucm.look.ar.math.geom.Vector3.java
es.ucm.look.ar.util.CameraParametersHelper.java
es.ucm.look.ar.util.DeviceOrientation.java
es.ucm.look.ar.util.LookARUtil.java
es.ucm.look.ar.util.PositionTimerTask.java
es.ucm.look.data.EntityData.java
es.ucm.look.data.LookData.java
es.ucm.look.data.WorldEntityFactory.java
es.ucm.look.data.WorldEntity.java
es.ucm.look.data.World.java
es.ucm.look.data.filesManager.LookFilesManager.java
es.ucm.look.data.interfaces.DataGetter.java
es.ucm.look.data.interfaces.DataHandler.java
es.ucm.look.data.interfaces.DataSetter.java
es.ucm.look.data.local.BasicDataHandler.java
es.ucm.look.data.local.DBDataHandler.java
es.ucm.look.data.local.contentprovider.LookContentProvider.java
es.ucm.look.data.local.contentprovider.sql.LookSQLContentProvider.java
es.ucm.look.data.local.contentprovider.sql.LookSQLHelper.java
es.ucm.look.data.remote.ConfigNet.java
es.ucm.look.data.remote.LookProperties.java
es.ucm.look.data.remote.RemoteDBHandler.java
es.ucm.look.data.remote.restful.LookService.java
es.ucm.look.data.remote.restful.RestMethod.java
es.ucm.look.data.remote.restful.ServiceManager.java
es.ucm.look.location.LocationManager.java
es.ucm.look.locationProvider.DeviceSensor.java
es.ucm.look.locationProvider.InertialNavigationSystem.java
es.ucm.look.locationProvider.LocationProvider.java
es.ucm.look.locationProvider.Motion.java
es.ucm.look.locationProvider.Positioning.java
es.ucm.look.locationProvider.Util.java
es.ucm.look.locationProviderWifi.Cliente.java
es.ucm.look.locationProviderWifi.WifiLocation.java
es.ucm.look.locationProviderWifi.WifiService.java
es.ucm.look.locationProviderWifi.util.DateUtils.java
es.ucm.look.locationProviderWifi.util.DeviceReader.java
es.ucm.look.locationProviderWifi.util.DeviceWriter.java
es.ucm.look.locationProviderWifi.wifi.Lugar.java
es.ucm.look.locationProviderWifi.wifi.Lugares.java
es.ucm.look.locationProviderWifi.wifi.NodoWifi.java
es.ucm.look.locationProvider.map.Mapa.java
es.ucm.look.locationProvider.test.java