package net.bradmont.openmpd.controllers; import net.bradmont.openmpd.activities.ImportActivity; import net.bradmont.openmpd.models.*; import net.bradmont.openmpd.*; import net.bradmont.supergreen.models.*; import org.apache.http.*; import org.apache.http.auth.*; import org.apache.http.client.methods.*; import org.apache.http.impl.client.*; import org.apache.http.client.entity.*; import org.apache.http.message.*; import android.app.NotificationManager; import android.content.Context; import android.widget.ProgressBar; import android.support.v4.app.NotificationCompat; import java.lang.Runnable; import java.lang.Thread; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.StringWriter; import java.io.BufferedReader; public class ContactsEvaluator implements Runnable{ private NotificationCompat.Builder builder = null; private NotificationManager notifyManager = null; private Context context; private ArrayList<Boolean> initialImport = null; private ArrayList<Integer> newdata = null; public final static int NOTIFICATION_ID = 1; public ContactsEvaluator(Context context, NotificationCompat.Builder builder){ this.builder = builder; this.context = context; } public ContactsEvaluator(Context context, NotificationCompat.Builder builder, ArrayList<Integer> newdata, ArrayList<Boolean> initialImport){ this(context, builder); this.initialImport = initialImport; this.newdata = newdata; } public void run(){ ModelList [] contact_lists = null; int total_contacts = 0; if (newdata == null){ contact_lists = new ModelList[1]; contact_lists[0] = new Contact().getAll(); // all! total_contacts = contact_lists[0].size(); } else { contact_lists = new ModelList[newdata.size()]; for (int i = 0; i < newdata.size(); i++){ contact_lists[i] = MPDDBHelper.get().filter("contact", "account", newdata.get(i).intValue()); total_contacts += contact_lists[i].size(); } } notifyManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); int progress = 0; ContactStatus temp = new ContactStatus(); ContactStatus.beginTransaction(); for (int j = 0; j < contact_lists.length; j++){ ModelList contacts = contact_lists[j]; for (int i=0; i < contacts.size(); i++){ try { ((Contact) contacts.get(i)).updateStatus(initialImport.get(j).booleanValue()); } catch (Exception e){ String contact_id = "Contact index " + i + " of " + contacts.size() + ", Contact_id: "; try { contact_id += ((Contact) contacts.get(i)).getInt("id"); contact_id += "\nName: " + ((Contact) contacts.get(i)).getInt("fname") + " " + ((Contact) contacts.get(i)).getInt("lname"); } catch (Exception drop ){} LogItem.logError("Error evaluating contact", contact_id, e); } progress++; if (progress % 1000 == 0){ ContactStatus.endTransaction(); ContactStatus.beginTransaction(); } if (builder != null){ builder.setProgress(total_contacts, progress, false); notifyManager.notify(NOTIFICATION_ID, builder.build()); } ImportActivity.setProgress(-1, total_contacts, progress, false); } } ContactStatus.endTransaction(); } }