/** * Copyright (c) 2010 Michael A. MacDonald */ package android.androidVNC; import android.app.Activity; import android.app.Dialog; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import com.antlersoft.android.bc.BCFactory; import com.antlersoft.android.contentxml.SqliteElement; import com.antlersoft.android.contentxml.SqliteElement.ReplaceStrategy; import com.cgcl.cloudesk.cloudeskmain.screens.act.R; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import org.xml.sax.SAXException; /** * @author Michael A. MacDonald * */ class ImportExportDialog extends Dialog { private androidVNC _configurationDialog; private EditText _textLoadUrl; private EditText _textSaveUrl; /** * @param context */ public ImportExportDialog(androidVNC context) { super(context); setOwnerActivity((Activity)context); _configurationDialog = context; } /* (non-Javadoc) * @see android.app.Dialog#onCreate(android.os.Bundle) */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.importexport); setTitle(R.string.import_export_settings); _textLoadUrl = (EditText)findViewById(R.id.textImportUrl); _textSaveUrl = (EditText)findViewById(R.id.textExportPath); File f = BCFactory.getInstance().getStorageContext().getExternalStorageDir(_configurationDialog, null); // Sdcard not mounted; nothing else to do if (f == null) return; f = new File(f, "vnc_settings.xml"); _textSaveUrl.setText(f.getAbsolutePath()); try { _textLoadUrl.setText(f.toURL().toString()); } catch (MalformedURLException e) { // Do nothing; default value not set } Button export = (Button)findViewById(R.id.buttonExport); export.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { File f = new File(_textSaveUrl.getText().toString()); Writer writer = new OutputStreamWriter(new FileOutputStream(f, false)); SqliteElement.exportDbAsXmlToStream(_configurationDialog.getDatabaseHelper().getReadableDatabase(), writer); writer.close(); dismiss(); } catch (IOException ioe) { errorNotify("I/O Exception exporting config", ioe); } catch (SAXException e) { errorNotify("XML Exception exporting config", e); } } }); ((Button)findViewById(R.id.buttonImport)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { URL url = new URL(_textLoadUrl.getText().toString()); URLConnection connection = url.openConnection(); connection.connect(); Reader reader = new InputStreamReader(connection.getInputStream()); SqliteElement.importXmlStreamToDb( _configurationDialog.getDatabaseHelper().getWritableDatabase(), reader, ReplaceStrategy.REPLACE_EXISTING); dismiss(); _configurationDialog.arriveOnPage(); } catch (MalformedURLException mfe) { errorNotify("Improper URL given: " + _textLoadUrl.getText(), mfe); } catch (IOException ioe) { errorNotify("I/O error reading configuration", ioe); } catch (SAXException e) { errorNotify("XML or format error reading configuration", e); } } }); } private void errorNotify(String msg, Throwable t) { Log.i("android.androidVNC.ImportExportDialog", msg, t); Utils.showErrorMessage(this.getContext(), msg + ":" + t.getMessage()); } }