/*
* This source is part of the
* _____ ___ ____
* __ / / _ \/ _ | / __/___ _______ _
* / // / , _/ __ |/ _/_/ _ \/ __/ _ `/
* \___/_/|_/_/ |_/_/ (_)___/_/ \_, /
* /___/
* repository.
*
* Copyright (C) 2013-2017 Carmen Alvarez (c@rmen.ca)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ca.rmen.android.networkmonitor.app.dbops.backend.export;
import android.content.Context;
import android.content.Intent;
import java.io.File;
import java.util.concurrent.atomic.AtomicBoolean;
import ca.rmen.android.networkmonitor.Constants;
import ca.rmen.android.networkmonitor.R;
import ca.rmen.android.networkmonitor.app.dbops.ProgressListener;
import ca.rmen.android.networkmonitor.app.dbops.backend.DBOperation;
import ca.rmen.android.networkmonitor.app.dbops.ui.Share;
import ca.rmen.android.networkmonitor.util.Log;
/**
* Export the Network Monitor data from the DB to a file.
*/
public abstract class FileExport implements DBOperation {
private static final String TAG = Constants.TAG + FileExport.class.getSimpleName();
protected final Context mContext;
protected final File mFile;
private final AtomicBoolean mIsCanceled = new AtomicBoolean(false);
protected FileExport(Context context, File file) {
Log.v(TAG, "FileExport: file " + file);
mContext = context;
mFile = file;
}
@Override
abstract public void execute(ProgressListener listener);
@Override
public void cancel() {
mIsCanceled.set(true);
}
public boolean isCanceled() {
return mIsCanceled.get();
}
public File getFile() {
return mFile;
}
/**
* @return a chooser intent to share a report summary text, with an optional attached exported file.
*/
public static Intent getShareIntent(Context context, File exportedFile) {
String reportSummary = SummaryExport.getSummary(context);
// Bring up the chooser to share the file.
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.export_subject_send_log));
String dateRange = SummaryExport.getDataCollectionDateRange(context);
String messageBody = context.getString(R.string.export_message_text, dateRange);
if (exportedFile != null && exportedFile.exists()) {
Share.addFileToShareIntent(context, sendIntent, exportedFile.getName());
messageBody += context.getString(R.string.export_message_text_file_attached);
} else {
sendIntent.setType("text/plain");
}
messageBody += reportSummary;
sendIntent.putExtra(Intent.EXTRA_TEXT, messageBody);
return Intent.createChooser(sendIntent, context.getResources().getText(R.string.action_share));
}
}