package de.bsd.zwitscher.helper;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import de.bsd.zwitscher.TweetDB;
/**
* Handler that expands the passed urls and stores them in the
* respective database table
* @author Heiko W. Rupp
*/
public class ExpandUrlRunner implements Runnable {
Context context;
TweetDB tweetDB;
List<String> urls;
public ExpandUrlRunner(Context context, List<String> urls) {
this.urls = urls;
this.context = context;
tweetDB = TweetDB.getInstance(context);
}
@Override
public void run() {
List<UrlPair> pairs = fetchUrls(urls);
persistUrls(pairs);
}
private List<UrlPair> fetchUrls(List<String> srcUrls) {
List<UrlPair> result = new ArrayList<UrlPair>(srcUrls.size());
for (String url : srcUrls) {
String res = UrlHelper.expandUrl(url);
UrlPair pair = new UrlPair(url,res);
result.add(pair);
}
return result;
}
private void persistUrls(Collection<UrlPair> urlPairs) {
if (urlPairs.isEmpty())
return;
List<ContentValues> values = new ArrayList<ContentValues>(urlPairs.size());
for (UrlPair pair : urlPairs) {
ContentValues cv = new ContentValues(3);
cv.put("src",pair.getSrc());
cv.put("target",pair.getTarget());
cv.put("last_modified",System.currentTimeMillis());
values.add(cv);
}
tweetDB.storeValues(TweetDB.TABLE_URLS,values);
}
}