package com.garethevans.church.opensongtablet;
import android.app.Activity;
import android.app.DialogFragment;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class PopUpImportExternalFile extends DialogFragment {
static PopUpImportExternalFile newInstance() {
PopUpImportExternalFile frag;
frag = new PopUpImportExternalFile();
return frag;
}
public interface MyInterface {
void refreshAll();
void onSongImportDone(String message);
void backupInstall(String message);
}
private MyInterface mListener;
@Override
@SuppressWarnings("deprecation")
public void onAttach(Activity activity) {
mListener = (MyInterface) activity;
super.onAttach(activity);
}
@Override
public void onDetach() {
mListener = null;
super.onDetach();
}
TextView itemTitle_TextView;
EditText fileTitle_EditText;
TextView fileType_heading;
TextView fileType_TextView;
TextView messageOnSong_TextView;
TextView messageOpenSong_TextView;
TextView chooseFolder_TextView;
Spinner chooseFolder_Spinner;
Button importFile_Cancel;
Button importFile_Save;
CheckBox overWrite_CheckBox;
//static ArrayList<String> newtempfolders;
String moveToFolder;
String backupchosen;
//Backup_Install backup_install;
FileInputStream inputStream;
String scheme = "";
ArrayList<String> backups = new ArrayList<>();
String message = "";
View V;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getDialog().setTitle(getActivity().getResources().getString(R.string.importnewsong));
V = inflater.inflate(R.layout.popup_importexternalfile, container, false);
// Initialise the views
itemTitle_TextView = (TextView) V.findViewById(R.id.itemTitle_TextView);
fileTitle_EditText = (EditText) V.findViewById(R.id.fileTitle_EditText);
fileType_heading = (TextView) V.findViewById(R.id.fileType_heading);
fileType_TextView = (TextView) V.findViewById(R.id.fileType_TextView);
chooseFolder_TextView = (TextView) V.findViewById(R.id.chooseFolder_TextView);
messageOnSong_TextView = (TextView) V.findViewById(R.id.messageOnSong_TextView);
messageOpenSong_TextView = (TextView) V.findViewById(R.id.messageOpenSong_TextView);
chooseFolder_Spinner = (Spinner) V.findViewById(R.id.chooseFolder_Spinner);
importFile_Cancel = (Button) V.findViewById(R.id.importFile_Cancel);
importFile_Save = (Button) V.findViewById(R.id.importFile_Save);
overWrite_CheckBox = (CheckBox) V.findViewById(R.id.overWrite_CheckBox);
// By default, we will assume this is a song
FullscreenActivity.file_type = getResources().getString(R.string.options_song);
// Set the default button actions. These might be changed depending on the file type
importFile_Cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
importFile_Save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
defaultSaveAction();
}
});
// Decide if this has been actioned by needtoimport
switch (FullscreenActivity.whattodo) {
case "doimport":
try {
scheme = FullscreenActivity.file_uri.getScheme();
} catch (Exception e) {
e.printStackTrace();
}
switch (scheme) {
case "content":
schemeContent();
break;
case "file":
if (!FullscreenActivity.file_name.endsWith(".backup") && !FullscreenActivity.file_name.endsWith(".osb")) {
schemeFile();
}
break;
default:
dismiss();
break;
}
if (FullscreenActivity.file_name.endsWith(".ost")) {
// This is definitely a song
setupOSTImport();
} else if (FullscreenActivity.file_name.endsWith(".usr") || FullscreenActivity.file_name.endsWith(".USR")) {
// This is a song from SongSelect
setupUSRImport();
} else if (FullscreenActivity.file_name.endsWith(".osts")) {
// This is definitely a set
setupOSTSImport();
} else if (FullscreenActivity.file_name.endsWith(".osb")) {
// This is an OpenSong backup
setupOSBImport();
} else if (FullscreenActivity.file_name.endsWith(".backup")) {
// This is definitely an opensong archive
setupOSImport();
} else if (Bible.isYouVersionScripture(FullscreenActivity.incoming_text)) {
// It is a scripture, so create the Scripture file
// Get the bible translation
setupBibleImport();
} else {
// Unknown file
setupUnknownImport();
}
break;
case "importos":
setupOSImport();
break;
case "importosb":
setupOSBImport();
break;
}
FullscreenActivity.whattodo = "";
return V;
}
public void defaultSaveAction() {
// Now check that the file doesn't already exist. If it does alert the user to try again
File testfile;
if (moveToFolder.equals(getResources().getString(R.string.mainfoldername))) {
testfile = new File(FullscreenActivity.dir + "/" + fileTitle_EditText.getText().toString());
} else {
testfile = new File(FullscreenActivity.dir + "/" + moveToFolder + "/" + fileTitle_EditText.getText().toString());
}
if (FullscreenActivity.file_type.equals(getResources().getString(R.string.options_set))) {
testfile = new File(FullscreenActivity.dirsets + "/" + fileTitle_EditText.getText().toString());
}
// Does it exist?
if (testfile.exists() && !overWrite_CheckBox.isChecked()) {
Toast.makeText(getActivity(), getResources().getString(R.string.file_exists), Toast.LENGTH_LONG).show();
} else {
FullscreenActivity.myToastMessage = getResources().getString(R.string.ok);
File from = new File(FullscreenActivity.file_location);
try {
InputStream in = new FileInputStream(from);
OutputStream out = new FileOutputStream(testfile);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
FullscreenActivity.songfilename = FullscreenActivity.file_name;
FullscreenActivity.whichSongFolder = moveToFolder;
mListener.refreshAll();
dismiss();
} catch (Exception e) {
Toast.makeText(getActivity(), getResources().getString(R.string.no), Toast.LENGTH_LONG).show();
}
}
}
public void setupOSTImport() {
// OpenSongApp .ost Song file
FullscreenActivity.file_type = getResources().getString(R.string.options_song);
FullscreenActivity.file_name = FullscreenActivity.file_name.replace(".ost", "");
fileTitle_EditText.setText(FullscreenActivity.file_name);
fileType_TextView.setText(FullscreenActivity.file_type);
messageOnSong_TextView.setVisibility(View.GONE);
messageOpenSong_TextView.setVisibility(View.GONE);
showSongFolders();
}
public void setupOSTSImport() {
// OpenSongApp .osts Set file
FullscreenActivity.file_type = getResources().getString(R.string.options_set);
FullscreenActivity.file_name = FullscreenActivity.file_name.replace(".osts", "");
// Remove the 'choose folder' views as it will be saved to the sets folder
chooseFolder_Spinner.setVisibility(View.GONE);
chooseFolder_TextView.setVisibility(View.GONE);
// Change the title
getDialog().setTitle(getActivity().getResources().getString(R.string.importnewset));
fileTitle_EditText.setText(FullscreenActivity.file_name);
fileType_TextView.setText(FullscreenActivity.file_type);
messageOnSong_TextView.setVisibility(View.GONE);
messageOpenSong_TextView.setVisibility(View.GONE);
}
public void setupOSBImport() {
// Copy file the the correct location
if (FullscreenActivity.whattodo.equals("doimport")) {
copyFile();
}
// Hide the views we don't need
fileTitle_EditText.setVisibility(View.GONE);
fileType_heading.setVisibility(View.GONE);
fileType_TextView.setVisibility(View.GONE);
messageOnSong_TextView.setVisibility(View.GONE);
overWrite_CheckBox.setVisibility(View.GONE);
// Change the views to read what we want
getDialog().setTitle(getActivity().getResources().getString(R.string.backup_import));
itemTitle_TextView.setText(getActivity().getResources().getString(R.string.backup_import));
chooseFolder_TextView.setText(getActivity().getResources().getString(R.string.file_chooser));
importFile_Save.setText(getActivity().getResources().getString(R.string.ok));
FullscreenActivity.file_type = getResources().getString(R.string.backup_info);
// Change the views to be what we want
if(!showOSBFiles()) {
// No files exist in the appropriate location
chooseFolder_TextView.setText(getActivity().getResources().getString(R.string.backup_error));
chooseFolder_Spinner.setVisibility(View.GONE);
importFile_Save.setVisibility(View.GONE);
} else {
// Set the OK button to import
importFile_Save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
importOSB();
}
});
}
}
public void setupUSRImport() {
// SongSelect .usr file
FullscreenActivity.file_type = "USR";
FullscreenActivity.file_name = FullscreenActivity.file_name.replace("_", " ");
fileTitle_EditText.setText(FullscreenActivity.file_name);
fileType_TextView.setText(FullscreenActivity.file_type);
messageOnSong_TextView.setVisibility(View.GONE);
messageOpenSong_TextView.setVisibility(View.GONE);
showSongFolders();
}
public void setupOSImport() {
// Copy file the the correct location
if (FullscreenActivity.whattodo.equals("doimport")) {
copyFile();
}
// Hide the views we don't need
fileTitle_EditText.setVisibility(View.GONE);
fileType_heading.setVisibility(View.GONE);
fileType_TextView.setVisibility(View.GONE);
messageOpenSong_TextView.setVisibility(View.GONE);
overWrite_CheckBox.setVisibility(View.GONE);
// Change the views to read what we want
getDialog().setTitle(getActivity().getResources().getString(R.string.import_onsong_choose));
itemTitle_TextView.setText(getActivity().getResources().getString(R.string.import_onsong_choose));
chooseFolder_TextView.setText(getActivity().getResources().getString(R.string.file_chooser));
importFile_Save.setText(getActivity().getResources().getString(R.string.ok));
FullscreenActivity.file_type = "ONSONGARCHIVE";
// Change the views to be what we want
if(!showOSFiles()) {
// No files exist in the appropriate location
chooseFolder_TextView.setText(getActivity().getResources().getString(R.string.import_onsong_error));
chooseFolder_Spinner.setVisibility(View.GONE);
importFile_Save.setVisibility(View.GONE);
} else {
// Set the OK button to import
importFile_Save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
importOS();
}
});
}
}
public void setupBibleImport() {
// YouVersion Bible import
messageOnSong_TextView.setVisibility(View.GONE);
messageOpenSong_TextView.setVisibility(View.GONE);
Log.d("d","Bible true");
String translation = FullscreenActivity.scripture_title.substring(FullscreenActivity.scripture_title.lastIndexOf(" "));
String verses = FullscreenActivity.scripture_title.replace(translation, "");
// Since the scripture is one big line, split it up a little (50 chars max)
String[] scripture = FullscreenActivity.scripture.split(" ");
String scriptureline = "";
ArrayList<String> scripturearray = new ArrayList<>();
for (String aScripture : scripture) {
scriptureline = scriptureline + aScripture;
if (scriptureline.length() > 50) {
scripturearray.add(scriptureline);
scriptureline = "";
}
}
scripturearray.add(scriptureline);
// Convert the array back into one string separated by new lines
FullscreenActivity.scripture = "";
for (int x=0;x<scripturearray.size();x++) {
FullscreenActivity.scripture = FullscreenActivity.scripture + scripturearray.get(x) + "\n";
}
FullscreenActivity.scripture = FullscreenActivity.scripture.trim();
String text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<song>" +
" <title>"+verses+"</title>\n" +
" <author>"+translation+"</author>\n" +
" <user1></user1>\n" +
" <user2>false</user2>\n" +
" <user3></user3>\n" +
" <aka></aka>\n" +
" <key_line></key_line>\n" +
" <hymn_number></hymn_number>\n" +
" <lyrics>"+FullscreenActivity.scripture+"</lyrics>\n" +
"</song>";
// Write the file
String filename = FullscreenActivity.homedir + "/" + "Scriptures/YouVerion";
File newfile = new File(filename);
if (!newfile.mkdirs()) {
Log.d("d","Couldn't make scriptue folder");
}
try {
FileOutputStream overWrite = new FileOutputStream(filename, false);
overWrite.write(text.getBytes());
overWrite.flush();
overWrite.close();
} catch (Exception e) {
e.printStackTrace();
}
// Alert the user that the Scripture has been written
FullscreenActivity.myToastMessage = getString(R.string.scripture) + " - " + getString(R.string.ok);
ShowToast.showToast(getActivity());
dismiss();
}
public void setupUnknownImport() {
// Not too sure what this file is!
messageOnSong_TextView.setVisibility(View.GONE);
messageOpenSong_TextView.setVisibility(View.GONE);
if (FullscreenActivity.file_contents==null) {
FullscreenActivity.file_contents=getResources().getString(R.string.hasnotbeenimported);
}
if (FullscreenActivity.file_contents.contains("<slide")) {
// Remove the 'choose folder' views as it will be saved to the sets folder
chooseFolder_Spinner.setVisibility(View.GONE);
chooseFolder_TextView.setVisibility(View.GONE);
FullscreenActivity.file_type = getResources().getString(R.string.options_set);
// Change the title
getDialog().setTitle(getActivity().getResources().getString(R.string.importnewset));
} else if (FullscreenActivity.file_contents.contains("<lyrics>")) {
FullscreenActivity.file_type = getResources().getString(R.string.options_song);
} else {
FullscreenActivity.file_type = getResources().getString(R.string.file_type_unknown);
}
if (FullscreenActivity.file_contents.equals(getResources().getString(R.string.hasnotbeenimported))) {
FullscreenActivity.myToastMessage = FullscreenActivity.file_contents;
FullscreenActivity.file_contents = FullscreenActivity.file_type + " " + FullscreenActivity.file_contents;
ShowToast.showToast(getActivity());
dismiss();
}
fileTitle_EditText.setText(FullscreenActivity.file_name);
fileType_TextView.setText(FullscreenActivity.file_type);
showSongFolders();
}
public void schemeContent() {
Cursor cursor = getActivity().getContentResolver().query(FullscreenActivity.file_uri, new String[]{
MediaStore.MediaColumns.DISPLAY_NAME
}, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
int nameIndex = cursor.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME);
if (nameIndex >= 0) {
FullscreenActivity.file_name = cursor.getString(nameIndex);
}
cursor.close();
}
if (!FullscreenActivity.file_name.endsWith(".backup") && !FullscreenActivity.file_name.endsWith(".osb")) {
try {
InputStream is = getActivity().getContentResolver().openInputStream(FullscreenActivity.file_uri);
OutputStream os = new FileOutputStream(FullscreenActivity.homedir + "/" + FullscreenActivity.file_name);
FullscreenActivity.file_location = FullscreenActivity.homedir + "/" + FullscreenActivity.file_name;
byte[] buffer = new byte[4096];
int count;
if (is != null) {
while ((count = is.read(buffer)) > 0) {
os.write(buffer, 0, count);
}
}
os.close();
if (is != null) {
is.close();
}
inputStream = new FileInputStream(FullscreenActivity.file_location);
FullscreenActivity.file_contents = LoadXML.readTextFile(inputStream);
} catch (Exception e) {
// Error
e.printStackTrace();
}
}
}
public void schemeFile() {
try {
//if (FullscreenActivity.file_name.endsWith(".ost") ||
// FullscreenActivity.file_name.endsWith(".osts"))
if (!FullscreenActivity.file_name.endsWith(".backup") &&
!FullscreenActivity.file_name.endsWith(".osb") &&
!FullscreenActivity.file_name.endsWith(".pdf") &&
!FullscreenActivity.file_name.endsWith(".doc") &&
!FullscreenActivity.file_name.endsWith(".docx") &&
!FullscreenActivity.file_name.endsWith(".jpg") &&
!FullscreenActivity.file_name.endsWith(".png") &&
!FullscreenActivity.file_name.endsWith(".bmp") &&
!FullscreenActivity.file_name.endsWith(".gif") &&
!FullscreenActivity.file_name.endsWith(".zip") &&
!FullscreenActivity.file_name.endsWith(".sqlite")) {
inputStream = new FileInputStream(FullscreenActivity.file_location);
FullscreenActivity.file_contents = LoadXML.readTextFile(inputStream);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public void copyFile() {
// Move the file to the correct location
moveToFolder = FullscreenActivity.homedir.toString();
File importIt = new File (FullscreenActivity.file_location);
File newFile = new File (moveToFolder + "/" + FullscreenActivity.file_name);
Log.d("d","importIt="+importIt);
Log.d("d","newFile="+newFile);
if (importIt.renameTo(newFile)) {
Log.d("d","Move successful");
} else {
//have to copy instead
try {
if (!newFile.createNewFile()) {
Log.d("d","Error creating file");
}
final RandomAccessFile file1 = new RandomAccessFile(importIt, "r");
final RandomAccessFile file2 = new RandomAccessFile(newFile, "rw");
file2.getChannel().write(file1.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, importIt.length()));
file1.close();
file2.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void showSongFolders() {
ListSongFiles.getAllSongFolders();
ArrayAdapter<String> folders = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_dropdown_item, FullscreenActivity.mSongFolderNames);
chooseFolder_Spinner.setAdapter(folders);
moveToFolder = FullscreenActivity.mSongFolderNames[0];
chooseFolder_Spinner.setSelection(0);
chooseFolder_Spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
try {
//moveToFolder = newtempfolders.get(position);
moveToFolder = FullscreenActivity.mSongFolderNames[position];
} catch (Exception e) {
// Can't find folder
parent.setSelection(0);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
}
public boolean showOSFiles() {
// Populate the list
File[] backupfilecheck = FullscreenActivity.homedir.listFiles();
if (backupfilecheck != null) {
for (File aBackupfilecheck : backupfilecheck) {
if (aBackupfilecheck.isFile() && aBackupfilecheck.getPath().endsWith(".backup")) {
backups.add(aBackupfilecheck.getName());
}
}
}
if (backups.size()>0) {
ArrayAdapter<String> files = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_dropdown_item, backups);
chooseFolder_Spinner.setAdapter(files);
chooseFolder_Spinner.setSelection(0);
backupchosen = backups.get(0);
chooseFolder_Spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
try {
backupchosen = backups.get(position);
} catch (Exception e) {
// Can't find file
parent.setSelection(0);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
return true;
} else {
return false;
}
}
public boolean showOSBFiles() {
// Populate the list
File[] backupfilecheck = FullscreenActivity.homedir.listFiles();
if (backupfilecheck != null) {
for (File aBackupfilecheck : backupfilecheck) {
if (aBackupfilecheck.isFile() && aBackupfilecheck.getPath().endsWith(".osb")) {
backups.add(aBackupfilecheck.getName());
}
}
}
if (backups.size()>0) {
ArrayAdapter<String> files = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_dropdown_item, backups);
chooseFolder_Spinner.setAdapter(files);
chooseFolder_Spinner.setSelection(0);
backupchosen = backups.get(0);
chooseFolder_Spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
try {
backupchosen = backups.get(position);
} catch (Exception e) {
// Can't find file
parent.setSelection(0);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
return true;
} else {
return false;
}
}
public void importOS() {
// Hide the cancel button
importFile_Cancel.setVisibility(View.GONE);
//Change the text of the save button
importFile_Save.setText(getActivity().getResources().getString(R.string.wait));
importFile_Save.setClickable(false);
// Now start the AsyncTask
ImportOnSongBackup import_os = new ImportOnSongBackup();
import_os.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
public class ImportOnSongBackup extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
message = getActivity().getResources().getString(R.string.import_onsong_done);
if (!FullscreenActivity.dironsong.exists()) {
// No OnSong folder exists - make it
StorageChooser.createDirectory(FullscreenActivity.dironsong);
}
File dbfile = new File(FullscreenActivity.homedir + "/OnSong.Backup.sqlite3");
if (dbfile.exists()) {
dbfile.delete();
}
InputStream is;
ZipArchiveInputStream zis;
String filename;
try {
is = new FileInputStream(FullscreenActivity.homedir + "/" + backupchosen);
Log.d("backup", "is=" + is);
//final ArchiveInputStream in = new ArchiveStreamFactory().createArchiveInputStream("zip", is);
//File myfile = new File(FullscreenActivity.homedir + "/" + backupchosen);
zis = new ZipArchiveInputStream(new BufferedInputStream(is),"UTF-8",false);
ZipArchiveEntry ze;
while ((ze = (ZipArchiveEntry) zis.getNextEntry()) != null) {
final byte[] buffer = new byte[2048];
int count;
filename = ze.getName();
Log.d("d", "filename=" + filename);
FileOutputStream fout;
if (filename.equals("OnSong.Backup.sqlite3")) {
fout = new FileOutputStream(FullscreenActivity.homedir + "/" + filename);
} else {
fout = new FileOutputStream(FullscreenActivity.dironsong + "/" + filename);
}
final BufferedOutputStream out = new BufferedOutputStream(fout);
try {
while ((count = zis.read(buffer)) != -1) {
out.write(buffer, 0, count);
}
out.flush();
} catch (Exception e) {
message = getActivity().getResources().getString(R.string.import_onsong_error);
e.printStackTrace();
} finally {
try {
fout.getFD().sync();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//in.close();
zis.close();
} catch (Exception e) {
e.printStackTrace();
message = getActivity().getResources().getString(R.string.import_onsong_error);
return message;
}
//File dbfile = new File(FullscreenActivity.homedir + "/OnSong.Backup.sqlite3");
if (dbfile.exists()) {
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
// Go through each row and read in the content field
// Save the files with the .onsong extension
String query = "SELECT * FROM Song";
//Cursor points to a location in your results
Cursor cursor;
message = getActivity().getResources().getString(R.string.import_onsong_done);
String str_title;
String str_content;
try {
cursor = db.rawQuery(query, null);
// Move to first row
cursor.moveToFirst();
while (cursor.moveToNext()) {
// Extract data.
str_title = cursor.getString(cursor.getColumnIndex("title"));
// Make sure title doesn't have /
str_title = str_title.replace("/", "_");
str_title = TextUtils.htmlEncode(str_title);
str_content = cursor.getString(cursor.getColumnIndex("content"));
try {
// Now write the modified song
FileOutputStream overWrite = new FileOutputStream(FullscreenActivity.dironsong +
"/" + str_title + ".onsong", false);
overWrite.write(str_content.getBytes());
overWrite.flush();
overWrite.close();
} catch (Exception e) {
e.printStackTrace();
}
}
cursor.close();
} catch (Exception e) {
// Error with sql database
e.printStackTrace();
message = getActivity().getResources().getString(R.string.import_onsong_error);
}
}
return message;
}
@Override
protected void onPostExecute(String doneit) {
if (mListener!=null) {
mListener.onSongImportDone(doneit);
}
dismiss();
}
}
public void importOSB() {
// Hide the cancel button
importFile_Cancel.setVisibility(View.GONE);
//Change the text of the save button
importFile_Save.setText(getActivity().getResources().getString(R.string.wait));
importFile_Save.setClickable(false);
// Now start the AsyncTask
Backup_Install import_osb = new Backup_Install();
import_osb.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
public class Backup_Install extends AsyncTask<String, Void, String> {
@Override
public void onPreExecute() {
FullscreenActivity.myToastMessage = getActivity().getString(R.string.backup_import) +
"\n" + getActivity().getString(R.string.wait);
ShowToast.showToast(getActivity());
message = getActivity().getResources().getString(R.string.assetcopydone);
}
@SuppressWarnings("TryFinallyCanBeTryWithResources")
@Override
protected String doInBackground(String... strings) {
ZipInputStream zis = null;
try {
zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(FullscreenActivity.homedir+"/"+backupchosen)));
ZipEntry ze;
int count;
byte[] buffer = new byte[8192];
while ((ze = zis.getNextEntry()) != null) {
File file = new File(FullscreenActivity.dir, ze.getName());
File dir = ze.isDirectory() ? file : file.getParentFile();
if (!dir.isDirectory() && !dir.mkdirs())
throw new FileNotFoundException("Failed to ensure directory: " +
dir.getAbsolutePath());
if (ze.isDirectory())
continue;
FileOutputStream fout = new FileOutputStream(file);
try {
while ((count = zis.read(buffer)) != -1)
fout.write(buffer, 0, count);
} finally {
try {
fout.close();
} catch (Exception e) {
e.printStackTrace();
}
}
long time = ze.getTime();
if (time > 0)
file.setLastModified(time);
}
} catch (Exception e) {
e.printStackTrace();
message = getActivity().getResources().getString(R.string.backup_error);
} finally {
if (zis!=null) {
try {
zis.close();
} catch (Exception e) {
e.printStackTrace();
message = getActivity().getResources().getString(R.string.backup_error);
}
}
}
return message;
}
@Override
public void onPostExecute(String s) {
mListener.backupInstall(s);
dismiss();
}
}
}