/********************************************************************************************************************** * SharingDispatcher * * created 06.09.2012 by semtex * * (c) 2012 APEX gaming technology GmbH **********************************************************************************************************************/ package semtex.archery.business; import java.io.File; import java.text.DateFormat; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import semtex.archery.business.interfaces.ICallback; import semtex.archery.data.DatabaseHelper; import semtex.archery.data.ReportGenerator; import semtex.archery.data.entities.UserVisit; import semtex.archery.data.entities.Visit; import android.content.Intent; import android.net.Uri; import android.os.AsyncTask; import android.text.Html; import android.util.Log; /** * @author semtex * */ public class SharingDispatcher { private static final String TAG = SharingDispatcher.class.getName(); private final DateFormat dateFormatter = DateFormat.getDateInstance(); private final DatabaseHelper helper; private final ReportGenerator generator; private final Visit v; public SharingDispatcher(final DatabaseHelper helper, final Visit v) { this.helper = helper; this.v = v; this.generator = new ReportGenerator(helper); } public Intent shareMail() { final ArrayList<String> recipients = new ArrayList<String>(); for (final UserVisit uv : v.getUserVisit()) { if (uv.getUser().getMail() != null && !"".equals(uv.getUser().getMail())) { recipients.add(uv.getUser().getMail()); } // if } // for File report = null; try { report = generator.generatePDFReportForVisit(v); } catch(final Exception e) { e.printStackTrace(); } // try / catch Log.i(TAG, "Found " + recipients.size() + " recpients"); final Intent sharingIntent = new Intent(Intent.ACTION_SEND); sharingIntent.setType("text/html"); sharingIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients.toArray(new String[recipients.size()])); sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Results from " + v.getVersion().getParcour().getName() + " on " + dateFormatter.format(v.getBeginTime())); sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(generator.generateHTMLReportForVisit(v))); if (report != null) { sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(report)); } // if return sharingIntent; } // shareMail public void shareServer(final ICallback<Void> callback) { final AsyncTask<Void, Void, Boolean> task = new AsyncTask<Void, Void, Boolean>() { private Throwable exception; @Override protected Boolean doInBackground(final Void... params) { final List<String> generateJsonObjectsForVisit = generator.generateJsonObjectsForVisit(v); for (final String output : generateJsonObjectsForVisit) { final HttpClient httpclient = new DefaultHttpClient(); final HttpPost httppost = new HttpPost("http://shice.it/c/upload.php"); final List<NameValuePair> pairs = new LinkedList<NameValuePair>(); final NameValuePair nvp = new BasicNameValuePair("a", output); pairs.add(nvp); try { httppost.setEntity(new UrlEncodedFormEntity(pairs)); final HttpResponse response = httpclient.execute(httppost); if (response.getStatusLine().getStatusCode() == 200) { return true; }// if return false; } catch(final Exception ex) { this.exception = ex; return false; } // try / catch } // for return false; } // doInBackground @Override protected void onPostExecute(final Boolean result) { if (callback != null) { if (result) { callback.onSuccess(null); } else { callback.onFailure(exception); } } } }; task.execute((Void)null); } // shareServer }