package de.tudarmstadt.informatik.hostage.logging; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import android.content.Context; import android.content.SharedPreferences; import android.os.Environment; import android.preference.PreferenceManager; public class SQLLogger implements Logger{ Context context; DatabaseHandler dbh; public SQLLogger(Context context){ this.context = context; dbh = new DatabaseHandler(context); } public synchronized void write(Record record) { dbh.addRecord(record); } public void exportDatabase(String format){ try { FileOutputStream log; SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context); if(pref.getBoolean("pref_external_storage", false)){ //TODO Fehlermeldung wenn keine SD karte gefunden werden kann log = context.openFileOutput("hostage_" + format + "_" + System.currentTimeMillis() + ".log", Context.MODE_PRIVATE); } else{ File file = new File(Environment.getExternalStorageDirectory(), "hostage_" + format + "_" + System.currentTimeMillis() + ".log"); log = new FileOutputStream(file); } ArrayList records = dbh.getAllRecords(); for(Record record : records){ if(format.equals("JSON")){ log.write((record.toStringJson() + "\n").getBytes()); }else { log.write((record.toString() + "\n").getBytes()); } } log.flush(); log.close(); } catch (Exception e) { e.printStackTrace(); } } public int getAttackCount(){ return dbh.getAttackCount(); } public int getAttackPerProtokollCount(String protocol){ return dbh.getAttackPerProtokolCount(protocol); } public void clearLog(){ dbh.clearData(); } @Override public void close() { // TODO Auto-generated method stub } }