Browse Source

QS changes in UglyDbHelper
RecordOverviewFragment will show just available protocol sections

Julien Clauter 10 years ago
parent
commit
d3ffe5af3f

+ 41 - 21
src/de/tudarmstadt/informatik/hostage/logging/UglyDbHelper.java

@@ -1,14 +1,15 @@
 package de.tudarmstadt.informatik.hostage.logging;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-
 import android.content.ContentValues;
 import android.content.Context;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
 import android.util.Log;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
 import de.tudarmstadt.informatik.hostage.logging.Record.TYPE;
 import de.tudarmstadt.informatik.hostage.ui.LogFilter;
 
@@ -102,10 +103,15 @@ public class UglyDbHelper extends SQLiteOpenHelper {
 
 	// Creating Tables
 	@Override
-	public void onCreate(SQLiteDatabase db) {
-		db.execSQL(CREATE_BSSID_TABLE);
-		db.execSQL(CREATE_ATTACK_INFO_TABLE);
-		db.execSQL(CREATE_RECORD_TABLE);
+	public void onCreate(SQLiteDatabase db){
+        try{
+            db.execSQL(CREATE_BSSID_TABLE);
+            db.execSQL(CREATE_ATTACK_INFO_TABLE);
+            db.execSQL(CREATE_RECORD_TABLE);
+        }catch (android.database.SQLException e){
+            System.out.println(" " + "Could not create SQL Tables.");
+        }
+
 	}
 
 	// Upgrading database
@@ -148,7 +154,7 @@ public class UglyDbHelper extends SQLiteOpenHelper {
 	 */
 	public ArrayList<Record> getRecordsForFilter(LogFilter filter) {
 		ArrayList<Record> recordList = new ArrayList<Record>();
-		String selectQuery = "SELECT  * FROM " + TABLE_RECORDS + " NATURAL JOIN " + TABLE_ATTACK_INFO + " NATURAL JOIN " + TABLE_BSSIDS;
+		String selectQuery = "SELECT * FROM " + TABLE_RECORDS + " NATURAL JOIN " + TABLE_ATTACK_INFO + " NATURAL JOIN " + TABLE_BSSIDS;
 
 		// TIMESTAMPS
 		selectQuery = selectQuery + " WHERE " + KEY_TIME;
@@ -270,13 +276,22 @@ public class UglyDbHelper extends SQLiteOpenHelper {
 		recordValues.put(KEY_TIME, record.getTimestamp()); // Log Timestamp
 		recordValues.put(KEY_PACKET, record.getPacket()); // Log Packet
 
+
+        long e1=0;
+        long e2=0;
 		// Inserting Rows
-		db.insertWithOnConflict(TABLE_ATTACK_INFO, null, attackValues,
-				SQLiteDatabase.CONFLICT_REPLACE);
-		db.insert(TABLE_RECORDS, null, recordValues);
-		db.close(); // Closing database connection
-		// Update Network Information
-		updateNetworkInformation(bssidValues);
+        if (db != null) {
+             e1 = db.insertWithOnConflict(TABLE_ATTACK_INFO, null, attackValues,
+                    SQLiteDatabase.CONFLICT_REPLACE);
+             e2 = db.insert(TABLE_RECORDS, null, recordValues);
+            db.close(); // Closing database connection
+        }
+        // Update Network Information
+		long e3 = updateNetworkInformation(bssidValues);
+
+        if (e1 ==-1 || e2 == -1 || e3 == -1){
+            System.out.println(""+"Could not insert Record");
+        }
 	}
 
 	/**
@@ -324,7 +339,7 @@ public class UglyDbHelper extends SQLiteOpenHelper {
 	public Record getRecord(int id) {
 		String selectQuery = "SELECT  * FROM " + TABLE_RECORDS
 						  + " NATURAL JOIN " + TABLE_ATTACK_INFO 
-						  + " NATURAL JOIN "+ TABLE_BSSIDS 
+						  + " NATURAL JOIN "+ TABLE_BSSIDS
 						  + " WHERE " + KEY_ID + " = " + id;
 		SQLiteDatabase db = this.getReadableDatabase();
 
@@ -348,11 +363,11 @@ public class UglyDbHelper extends SQLiteOpenHelper {
 	public ArrayList<Record> getAllRecords() {
 		ArrayList<Record> recordList = new ArrayList<Record>();
 		// Select All Query
-		String selectQuery = "SELECT  * FROM " + TABLE_RECORDS
-						  + " NATURAL JOIN " + TABLE_ATTACK_INFO 
+		String selectQuery = "SELECT * FROM " + TABLE_RECORDS
+						  + " NATURAL JOIN " + TABLE_ATTACK_INFO
 						  + " NATURAL JOIN " + TABLE_BSSIDS;
 
-		SQLiteDatabase db = this.getWritableDatabase();
+		SQLiteDatabase db = this.getReadableDatabase();
 		Cursor cursor = db.rawQuery(selectQuery, null);
 
 		Log.i("Database", "Start loop");
@@ -381,7 +396,7 @@ public class UglyDbHelper extends SQLiteOpenHelper {
 	public Record getRecordOfAttackId(long attack_id) {
 		String selectQuery = "SELECT  * FROM " + TABLE_RECORDS
 						  + " NATURAL JOIN " + TABLE_ATTACK_INFO 
-						  + " NATURAL JOIN " + TABLE_BSSIDS 
+						  + " NATURAL JOIN " + TABLE_BSSIDS
 						  + " WHERE " + KEY_ATTACK_ID + " = " + attack_id 
 						  + " GROUP BY " + KEY_ATTACK_ID;
 		SQLiteDatabase db = this.getReadableDatabase();
@@ -756,7 +771,7 @@ public class UglyDbHelper extends SQLiteOpenHelper {
 		return networkInformation;
 	}
 
-	public void updateNetworkInformation(
+	public long updateNetworkInformation(
 			HashMap<String, Object> networkInformation) {
 		SQLiteDatabase db = this.getReadableDatabase();
 		String bssid = (String) networkInformation.get(KEY_BSSID);
@@ -764,6 +779,9 @@ public class UglyDbHelper extends SQLiteOpenHelper {
 				+ KEY_BSSID + " = " + "'" + bssid + "'";
 		Cursor cursor = db.rawQuery(bssidQuery, null);
 		int result = cursor.getCount();
+
+        long errorCode = 0;
+
 		if (cursor != null
 				&& cursor.moveToFirst()
 				&& (result <= 0 || cursor.getLong(5) < (Long) networkInformation
@@ -781,11 +799,13 @@ public class UglyDbHelper extends SQLiteOpenHelper {
 			bssidValues.put(KEY_ACCURACY,
 					(float) (Float) networkInformation.get(KEY_ACCURACY));
 			bssidValues.put(KEY_TIME, (Long) networkInformation.get(KEY_TIME));
-			db.insertWithOnConflict(TABLE_BSSIDS, null, bssidValues,
+			errorCode = db.insertWithOnConflict(TABLE_BSSIDS, null, bssidValues,
 					SQLiteDatabase.CONFLICT_REPLACE);
 		}
 		cursor.close();
 		db.close();
+
+        return errorCode;
 	}
 
 	public void updateNetworkInformation(

+ 30 - 12
src/de/tudarmstadt/informatik/hostage/ui2/fragment/RecordOverviewFragment.java

@@ -1,12 +1,5 @@
 package de.tudarmstadt.informatik.hostage.ui2.fragment;
 
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-
 import android.annotation.SuppressLint;
 import android.app.Fragment;
 import android.content.Context;
@@ -27,6 +20,14 @@ import android.widget.ImageButton;
 import android.widget.PopupMenu;
 import android.widget.PopupMenu.OnMenuItemClickListener;
 import android.widget.Toast;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+
 import de.tudarmstadt.informatik.hostage.R;
 import de.tudarmstadt.informatik.hostage.logging.Record;
 import de.tudarmstadt.informatik.hostage.logging.Record.TYPE;
@@ -181,6 +182,8 @@ public class RecordOverviewFragment extends Fragment implements ChecklistDialog.
             i++;
         }
 
+        ArrayList<String>groupTitle = new ArrayList<String>();
+
 		for (Record val : data) {
             // DO GROUPING IN HERE
 			HashMap<String, String> map = new HashMap<String, String>();
@@ -200,11 +203,12 @@ public class RecordOverviewFragment extends Fragment implements ChecklistDialog.
             if (items == null) {
                 items = new ArrayList<ExpandableListItem>();
                 sectionData.put(groupID, items);
+                groupTitle.add(groupID);
             }
 			items.add(item);
 		}
 
-        RecordListAdapter adapter = new RecordListAdapter(this.getApplicationContext(),this.getGroupTitle(), sectionData);
+        RecordListAdapter adapter = new RecordListAdapter(this.getApplicationContext(), groupTitle, sectionData);
 
         mylist.setAdapter(adapter);
 	}
@@ -562,7 +566,7 @@ public class RecordOverviewFragment extends Fragment implements ChecklistDialog.
 	
 	private void addRecordToDB() {
 
-        if (dbh.getAllRecords().size() > 0) return;
+        if ((dbh.getRecordCount() > 0)) return;
 
 		Calendar cal = Calendar.getInstance();
 
@@ -572,6 +576,8 @@ public class RecordOverviewFragment extends Fragment implements ChecklistDialog.
 		int numberofRecords = (int) (Math.random() * (50 - 10));
 		for (int i = 0; i < numberofRecords; i++) {
 			Record record = new Record();
+            record.setId(i);
+            record.setAttack_id(i);
 			record.setBssid("BSSID: " + i);
 			record.setSsid("SSID: w" + i);
 			record.setTimestamp(cal.getTimeInMillis()
@@ -582,15 +588,27 @@ public class RecordOverviewFragment extends Fragment implements ChecklistDialog.
 					R.array.protocols)[index];
 
 			record.setProtocol(protocolName);
-			record.setId(i);
-			record.setAttack_id(i);
 
 			record.setLocalIP("127.0.0.1");
 			record.setType(TYPE.SEND);
 
 			dbh.addRecord(record);
 		}
-	}
+
+        int countAllLogs = dbh.getAllRecords().size();
+        int countRecords = dbh.getRecordCount();
+        int countAttacks = dbh.getAttackCount();
+
+        if ((countRecords == 0)) {
+            Record rec = dbh.getRecordOfAttackId(0);
+            Record rec2 = dbh.getRecord(0);
+
+
+            System.out.println(""+"Could not create logs!");
+            System.exit(0);
+        }
+
+    }
 
 
 }