Android Open Source - LitePal Connector






From Project

Back to project page LitePal.

License

The source code is released under:

Apache License

If you think the Android project LitePal 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)  Tony Green, Litepal Framework Open Source Project
 */*  w  ww .  j  av  a 2 s  .  co  m*/
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.litepal.tablemanager;

import org.litepal.exceptions.InvalidAttributesException;
import org.litepal.parser.LitePalAttr;
import org.litepal.parser.LitePalParser;

import android.database.sqlite.SQLiteDatabase;

/**
 * The connector to connect database provided by LitePal. Users can use this
 * class to get the instance of SQLiteDatabase. But users still need to write
 * their own CRUD logic by the returned SQLiteDatabase. It will be improved in
 * the future.
 * 
 * @author Tony Green
 * @since 1.0
 */
public class Connector {

  /**
   * LitePalAttr model.
   */
  private static LitePalAttr mLitePalAttr;

  /**
   * The quote of LitePalHelper.
   */
  private static LitePalOpenHelper mLitePalHelper;

  /**
   * Get a writable SQLiteDatabase.
   * 
   * There're a lot of ways to operate database in android. But LitePal
   * doesn't support using ContentProvider currently. The best way to use
   * LitePal well is get the SQLiteDatabase instance and use the methods like
   * SQLiteDatabase#save, SQLiteDatabase#update, SQLiteDatabase#delete,
   * SQLiteDatabase#query in the SQLiteDatabase class to do the database
   * operation. It will be improved in the future.
   * 
   * @return A writable SQLiteDatabase instance
   * 
   * @throws InvalidAttributesException
   * @throws ParseConfigurationFileException
   */
  public synchronized static SQLiteDatabase getWritableDatabase() {
    LitePalOpenHelper litePalHelper = buildConnection();
    return litePalHelper.getWritableDatabase();
  }

  /**
   * Get a readable SQLiteDatabase.
   * 
   * There're a lot of ways to operate database in android. But LitePal
   * doesn't support using ContentProvider currently. The best way to use
   * LitePal well is get the SQLiteDatabase instance and use the methods like
   * SQLiteDatabase#query in the SQLiteDatabase class to do the database
   * query. It will be improved in the future.
   * 
   * @return A readable SQLiteDatabase instance.
   * 
   * @throws InvalidAttributesException
   * @throws ParseConfigurationFileException
   */
  public synchronized static SQLiteDatabase getReadableDatabase() {
    LitePalOpenHelper litePalHelper = buildConnection();
    return litePalHelper.getReadableDatabase();
  }

  /**
   * Call getDatabase directly will invoke the getWritableDatabase method by
   * default.
   * 
   * This is method is alias of getWritableDatabase.
   * 
   * @return A writable SQLiteDatabase instance
   * 
   * @throws InvalidAttributesException
   * @throws ParseConfigurationFileException
   */
  public static SQLiteDatabase getDatabase() {
    return getWritableDatabase();
  }

  /**
   * Build a connection to the database. This progress will analysis the
   * litepal.xml file, and will check if the fields in LitePalAttr are valid,
   * and it will open a SQLiteOpenHelper to decide to create tables or update
   * tables or doing nothing depends on the version attributes.
   * 
   * After all the stuffs above are finished. This method will return a
   * LitePalHelper object.Notes this method could throw a lot of exceptions.
   * 
   * @return LitePalHelper object.
   * 
   * @throws InvalidAttributesException
   * @throws ParseConfigurationFileException
   */
  private static LitePalOpenHelper buildConnection() {
    if (mLitePalAttr == null) {
      LitePalParser.parseLitePalConfiguration();
      mLitePalAttr = LitePalAttr.getInstance();
    }
    if (mLitePalAttr.checkSelfValid()) {
      if (mLitePalHelper == null) {
        mLitePalHelper = new LitePalOpenHelper(mLitePalAttr.getDbName(),
            mLitePalAttr.getVersion());
      }
      return mLitePalHelper;
    } else {
      throw new InvalidAttributesException("Uncaught invalid attributes exception happened");
    }
  }

}




Java Source Code List

org.litepal.LitePalApplication.java
org.litepal.LitePalBase.java
org.litepal.crud.AssociationsAnalyzer.java
org.litepal.crud.ClusterQuery.java
org.litepal.crud.DataHandler.java
org.litepal.crud.DataSupport.java
org.litepal.crud.DeleteHandler.java
org.litepal.crud.DynamicExecutor.java
org.litepal.crud.Many2ManyAnalyzer.java
org.litepal.crud.Many2OneAnalyzer.java
org.litepal.crud.One2OneAnalyzer.java
org.litepal.crud.QueryHandler.java
org.litepal.crud.SaveHandler.java
org.litepal.crud.UpdateHandler.java
org.litepal.crud.model.AssociationsInfo.java
org.litepal.exceptions.DataSupportException.java
org.litepal.exceptions.DatabaseGenerateException.java
org.litepal.exceptions.GlobalException.java
org.litepal.exceptions.InvalidAttributesException.java
org.litepal.exceptions.ParseConfigurationFileException.java
org.litepal.litepalsample.activity.AggregateActivity.java
org.litepal.litepalsample.activity.AverageSampleActivity.java
org.litepal.litepalsample.activity.CRUDActivity.java
org.litepal.litepalsample.activity.CountSampleActivity.java
org.litepal.litepalsample.activity.DeleteSampleActivity.java
org.litepal.litepalsample.activity.MainActivity.java
org.litepal.litepalsample.activity.ManageTablesActivity.java
org.litepal.litepalsample.activity.MaxSampleActivity.java
org.litepal.litepalsample.activity.MinSampleActivity.java
org.litepal.litepalsample.activity.ModelListActivity.java
org.litepal.litepalsample.activity.ModelStructureActivity.java
org.litepal.litepalsample.activity.QuerySampleActivity.java
org.litepal.litepalsample.activity.SaveSampleActivity.java
org.litepal.litepalsample.activity.SumSampleActivity.java
org.litepal.litepalsample.activity.TableListActivity.java
org.litepal.litepalsample.activity.TableStructureActivity.java
org.litepal.litepalsample.activity.UpdateSampleActivity.java
org.litepal.litepalsample.adapter.DataArrayAdapter.java
org.litepal.litepalsample.adapter.StringArrayAdapter.java
org.litepal.litepalsample.model.Album.java
org.litepal.litepalsample.model.Singer.java
org.litepal.litepalsample.model.Song.java
org.litepal.litepalsample.util.Utility.java
org.litepal.model.Table_Schema.java
org.litepal.parser.LitePalAttr.java
org.litepal.parser.LitePalContentHandler.java
org.litepal.parser.LitePalParser.java
org.litepal.tablemanager.AssociationCreator.java
org.litepal.tablemanager.AssociationUpdater.java
org.litepal.tablemanager.Connector.java
org.litepal.tablemanager.Creator.java
org.litepal.tablemanager.Dropper.java
org.litepal.tablemanager.Generator.java
org.litepal.tablemanager.LitePalOpenHelper.java
org.litepal.tablemanager.Upgrader.java
org.litepal.tablemanager.model.AssociationsModel.java
org.litepal.tablemanager.model.TableModel.java
org.litepal.tablemanager.typechange.BooleanOrm.java
org.litepal.tablemanager.typechange.DateOrm.java
org.litepal.tablemanager.typechange.DecimalOrm.java
org.litepal.tablemanager.typechange.NumericOrm.java
org.litepal.tablemanager.typechange.OrmChange.java
org.litepal.tablemanager.typechange.TextOrm.java
org.litepal.util.BaseUtility.java
org.litepal.util.Const.java
org.litepal.util.DBUtility.java
org.litepal.util.LogUtil.java
org.litepal.util.SharedUtil.java