Advertisement
Guest User

PhotosDataSource.java

a guest
Jul 20th, 2012
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.14 KB | None | 0 0
  1. package com.mysite.datasources;
  2.  
  3. import org.apache.commons.lang3.StringEscapeUtils;
  4.  
  5. import android.content.ContentValues;
  6. import android.content.Context;
  7. import android.database.Cursor;
  8. import android.database.DatabaseUtils;
  9. import android.database.SQLException;
  10. import android.database.sqlite.SQLiteDatabase;
  11. import android.widget.Toast;
  12.  
  13. import com.mysite.models.Photo;
  14. import com.mysite.utilities.DbHelper;
  15.  
  16. public class PhotosDataSource
  17. {
  18.  
  19.     private Context mContext;
  20.    
  21.     // Database fields
  22.     private SQLiteDatabase database;
  23.     private DbHelper dbHelper;
  24.  
  25.     private final String[] allColumns = {
  26.         Photo.COLUMN_ID,
  27.         Photo.COLUMN_TRIBID,
  28.         Photo.COLUMN_CAPTION,
  29.         Photo.COLUMN_HEIGHT,
  30.         Photo.COLUMN_WIDTH,
  31.         Photo.COLUMN_FILEPATH,
  32.         Photo.COLUMN_ARTICLETRIBID,
  33.         Photo.COLUMN_MODIFIED
  34.     };
  35.  
  36.    
  37.     public PhotosDataSource(Context context)
  38.     {
  39.         this.mContext = context;
  40.         dbHelper = new DbHelper(context);
  41.     }
  42.    
  43.     public void open() throws SQLException
  44.     {
  45.         database = dbHelper.getWritableDatabase();
  46.     }
  47.    
  48.     public void close()
  49.     {
  50.         dbHelper.close();
  51.     }
  52.  
  53.     public long createPhoto(Photo photo)
  54.     {
  55.         this.open();
  56.         try {
  57.             return database.insert(Photo.TABLE, null, this.buildContentValues(photo));
  58.         }
  59.         finally
  60.         {
  61.             this.close();
  62.         }
  63.     }
  64.  
  65.    
  66.     public int updatePhoto(Photo photo)
  67.     {
  68.         this.open();
  69.         try {
  70.             return database.update(Photo.TABLE, buildContentValues(photo), Photo.COLUMN_ID + " = ?", new String[] { String.valueOf(photo.id) });
  71.         }
  72.         finally
  73.         {
  74.             this.close();
  75.         }
  76.        
  77.     }
  78.    
  79.     private ContentValues buildContentValues(Photo photo)
  80.     {
  81.         ContentValues values = new ContentValues();
  82.         values.put(Photo.COLUMN_TRIBID, photo.tribid);
  83.         values.put(Photo.COLUMN_CAPTION, photo.caption);
  84.         values.put(Photo.COLUMN_HEIGHT, photo.height);
  85.         values.put(Photo.COLUMN_WIDTH, photo.width);
  86.         values.put(Photo.COLUMN_FILEPATH, photo.filepath);
  87.         values.put(Photo.COLUMN_ARTICLETRIBID, photo.articletribid);
  88.         values.put(Photo.COLUMN_MODIFIED, photo.modified);
  89.         return values;
  90.     }
  91.    
  92.     public Photo getPhotoData(String id, Boolean showToast)
  93.     {      
  94.         this.open();
  95.         Photo p1 = new Photo();
  96.         try {
  97.             Cursor cursor = database.query(Photo.TABLE,
  98.                     allColumns,
  99.                     Photo.COLUMN_ID + "=?",
  100.                     new String[] {id},
  101.                     null, null, null, null); //WHY CAN'T I USE "LIMIT 1" ?????
  102.            
  103.             cursor.moveToFirst();
  104.             p1 = cursorToPhoto(cursor);
  105.             cursor.close();
  106.            
  107.         } catch (Exception e) {
  108.             e.printStackTrace();
  109.             if(showToast)
  110.             {
  111.                 //show "couldn't load" message"
  112.                 Toast toast = Toast.makeText(
  113.                         this.mContext.getApplicationContext(),
  114.                         "NOTICE: Could not load selected photo.",
  115.                         Toast.LENGTH_LONG);
  116.                 toast.show();
  117.             }
  118.         }
  119.         finally
  120.         {
  121.             this.close();
  122.         }
  123.         return p1;
  124.     }
  125.    
  126.     private Photo cursorToPhoto(Cursor cursor)
  127.     {
  128.         Photo photo = new Photo();
  129.         photo.id = cursor.getLong(cursor.getColumnIndex(Photo.COLUMN_ID));
  130.         photo.tribid = StringEscapeUtils.unescapeXml(cursor.getString(cursor.getColumnIndex(Photo.COLUMN_TRIBID)));
  131.         photo.caption = StringEscapeUtils.unescapeXml(cursor.getString(cursor.getColumnIndex(Photo.COLUMN_CAPTION)));
  132.         photo.height = cursor.getInt(cursor.getColumnIndex(Photo.COLUMN_HEIGHT));
  133.         photo.width = cursor.getInt(cursor.getColumnIndex(Photo.COLUMN_WIDTH));
  134.         photo.filepath = StringEscapeUtils.unescapeXml(cursor.getString(cursor.getColumnIndex(Photo.COLUMN_FILEPATH)));
  135.         photo.articletribid = StringEscapeUtils.unescapeXml(cursor.getString(cursor.getColumnIndex(Photo.COLUMN_ARTICLETRIBID)));
  136.         photo.modified = StringEscapeUtils.unescapeXml(cursor.getString(cursor.getColumnIndex(Photo.COLUMN_MODIFIED)));
  137.  
  138.         return photo;
  139.     }
  140.    
  141.    
  142.     public boolean exists(String filepath)
  143.     {
  144.         this.open();
  145.         long theCount = 0;
  146.         Boolean itExists = false;
  147.         String countQuery = "SELECT count(" + Photo.COLUMN_ID + ") FROM " + Photo.TABLE + " WHERE " + Photo.COLUMN_FILEPATH + " = '" + filepath + "' LIMIT 1";
  148.         try {
  149.             theCount = DatabaseUtils.longForQuery(database, countQuery, null);
  150.             if(theCount > 0) { itExists = true; }
  151.         }
  152.         catch (Exception e)
  153.         {
  154.             System.out.println(e);
  155.         }
  156.         finally
  157.         {
  158.             this.close();
  159.         }
  160.         return itExists;
  161.     }
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement