DatabaseMessageSaver.java :  » Log » cogtomp » edu » colorado » zeus » message » Android Open Source

Android Open Source » Log » cogtomp 
cogtomp » edu » colorado » zeus » message » DatabaseMessageSaver.java
package edu.colorado.zeus.message;
 
import java.util.List;
import java.util.Map;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import edu.colorado.zeus.message.data.ListItem;
import edu.colorado.zeus.message.data.Message;
import edu.colorado.zeus.message.data.Zone;
import edu.colorado.zeus.provider.ZeusDB;

public class DatabaseMessageSaver implements MessageSaver {
  
  public void flushMessages(ContentResolver resolver){
    resolver.delete(ZeusDB.Messages.CONTENT_URI, null, null);
  }
  
  public void storeMessages(Map<Zone, List<Message>> messages, final ContentResolver resolver) {
    for(Zone zone : messages.keySet()) {
      for(Message message : messages.get(zone)) {
        storeMessage(zone, message, resolver);
      }
    }
  }
  
  public void storeMessage(Zone zone, Message message, ContentResolver resolver) {
    Integer zoneId = zone.getId();
    if(zoneId == null || zoneId == -1){
      zoneId = getZoneId(zone, resolver);
    }
    final ContentValues messageValue = message.translateTo();
    messageValue.put(ZeusDB.Messages.ZONE_ID, zoneId);
    if(!messageExists(zoneId, message, resolver))
      resolver.insert(ZeusDB.Messages.CONTENT_URI, messageValue);
  }
  
  public boolean messageExists(int zoneId, Message message, ContentResolver resolver){
    final Cursor messageCursor = resolver.query(ZeusDB.Messages.CONTENT_URI, null, ZeusDB.Messages.ZONE_ID + "= ? AND " + ZeusDB.Messages.SUBJECT + "= ?", new String[]{"" + zoneId, message.getSubject()}, null);
    if(messageCursor.next()){
      return true;
    }
    return false;
  }

  public void flushLists(ContentResolver resolver){
    resolver.delete(ZeusDB.Lists.CONTENT_URI, null, null);
  }
    
  public void storeList(Map<Zone, List<ListItem>> list, final ContentResolver resolver) {
    for(Zone zone : list.keySet()) {
      for(ListItem listItem : list.get(zone)) {
        storeListItem(zone, listItem, resolver);
      }
    }
  }

  public void storeListItem(Zone zone, ListItem listItem, ContentResolver resolver){
    Integer zoneId = zone.getId();
    if(zoneId == null || zoneId == -1){
      zoneId = getZoneId(zone, resolver);
    }
    final ContentValues listValues = listItem.translateTo();
    listValues.put(ZeusDB.Lists.ZONE_ID, zoneId);
    if(!listItemExists(zoneId, listItem, resolver))
      resolver.insert(ZeusDB.Lists.CONTENT_URI, listValues);
  }
  
  public boolean listItemExists(int zoneId, ListItem listItem, ContentResolver resolver){
    final Cursor listCursor = resolver.query(ZeusDB.Lists.CONTENT_URI, null, ZeusDB.Lists.ZONE_ID + "= ? AND " + ZeusDB.Lists.TEXT + "= ?", new String[]{"" + zoneId, listItem.getText()}, null);
    if(listCursor.next()){
      return true;
    }
    return false;
  }
  
  public void flushZones(ContentResolver resolver){
    resolver.delete(ZeusDB.Zones.CONTENT_URI, null, null);
  }
  
  public void storeZone(Zone zone, ContentResolver resolver) {
    final ContentValues zoneValue = zone.translateTo();
    if(!zoneExists(zone, resolver))
      resolver.insert(ZeusDB.Zones.CONTENT_URI, zoneValue);
  }
  
  public boolean zoneExists(Zone zone, ContentResolver resolver){
    final Cursor zoneCursor = resolver.query(ZeusDB.Zones.CONTENT_URI, null, ZeusDB.Zones.NAME + "= ?", new String[]{zone.getName()}, null);
    if(zoneCursor.next())
      return true;
    return false;
  }
  
  public int getZoneId(Zone zone, ContentResolver resolver){
    final Cursor zoneCursor = resolver.query(ZeusDB.Zones.CONTENT_URI, null, ZeusDB.Zones.NAME + "= ?", new String[]{zone.getName()}, null);
    if(zoneCursor.next()){
      return zoneCursor.getInt(zoneCursor.getColumnIndex(ZeusDB.Zones._ID));
    }
    return -1;
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.