DatabaseHandler.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. package de.tudarmstadt.informatik.hostage.logging;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.content.ContentValues;
  5. import android.content.Context;
  6. import android.database.Cursor;
  7. import android.database.sqlite.SQLiteDatabase;
  8. import android.database.sqlite.SQLiteOpenHelper;
  9. public class DatabaseHandler extends SQLiteOpenHelper {
  10. // All Static variables
  11. // Database Version
  12. private static final int DATABASE_VERSION = 1;
  13. // Database Name
  14. private static final String DATABASE_NAME = "recordManager";
  15. // Contacts table name
  16. private static final String TABLE_RECORDS = "records";
  17. // Contacts Table Columns names
  18. private static final String KEY_ID = "id";
  19. private static final String KEY_ATTACK_ID = "attack_id";
  20. private static final String KEY_PROTOCOL = "protocol";
  21. private static final String KEY_TYPE = "type";
  22. private static final String KEY_TIME = "timestamp";
  23. private static final String KEY_LOCAL_IP = "localIP";
  24. private static final String KEY_LOCAL_PORT = "localPort";
  25. private static final String KEY_REMOTE_IP = "remoteIP";
  26. private static final String KEY_REMOTE_PORT = "remotePort";
  27. private static final String KEY_PACKET = "packet";
  28. public DatabaseHandler(Context context) {
  29. super(context, DATABASE_NAME, null, DATABASE_VERSION);
  30. }
  31. // Creating Tables
  32. @Override
  33. public void onCreate(SQLiteDatabase db) {
  34. String CREATE_RECORD_TABLE = "CREATE TABLE " + TABLE_RECORDS + "(" + KEY_ID
  35. + " INTEGER PRIMARY KEY," + KEY_ATTACK_ID + " INTEGER," + KEY_PROTOCOL + " TEXT,"
  36. + KEY_TYPE + " TEXT," + KEY_TIME + " TEXT," + KEY_LOCAL_IP
  37. + " Text," + KEY_LOCAL_PORT + " INTEGER," + KEY_REMOTE_IP
  38. + " TEXT," + KEY_REMOTE_PORT + " INTEGER," + KEY_PACKET
  39. + " TEXT" + ")";
  40. db.execSQL(CREATE_RECORD_TABLE);
  41. }
  42. // Upgrading database
  43. @Override
  44. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  45. // Drop older table if existed
  46. db.execSQL("DROP TABLE IF EXISTS " + TABLE_RECORDS);
  47. // Create tables again
  48. onCreate(db);
  49. }
  50. // Adding new record
  51. public void addRecord(SQLRecord record) {
  52. SQLiteDatabase db = this.getWritableDatabase();
  53. ContentValues values = new ContentValues();
  54. values.put(KEY_ATTACK_ID, record.getAttack_id()); // Log Attack ID
  55. values.put(KEY_PROTOCOL, record.getProtocol());
  56. values.put(KEY_TYPE, record.getType()); // Log Type
  57. values.put(KEY_TIME, record.getTimestamp()); // Log Timestamp
  58. values.put(KEY_LOCAL_IP, record.getLocalIP()); // Log Local IP
  59. values.put(KEY_LOCAL_PORT, record.getLocalPort()); // Log Local Port
  60. values.put(KEY_REMOTE_IP, record.getRemoteIP()); // Log Remote IP
  61. values.put(KEY_REMOTE_PORT, record.getRemotePort()); // Log Remote Port
  62. values.put(KEY_PACKET, record.getPacket()); // Log Packet
  63. // Inserting Row
  64. db.insert(TABLE_RECORDS, null, values);
  65. db.close(); // Closing database connection
  66. }
  67. // Getting single record
  68. public SQLRecord getRecord(int id) {
  69. SQLiteDatabase db = this.getReadableDatabase();
  70. Cursor cursor = db.query(TABLE_RECORDS, new String[] { KEY_ID,
  71. KEY_ATTACK_ID, KEY_PROTOCOL, KEY_TYPE, KEY_TIME, KEY_LOCAL_IP,
  72. KEY_LOCAL_PORT, KEY_REMOTE_IP, KEY_REMOTE_PORT, KEY_PACKET },
  73. KEY_ID + "=?", new String[] { String.valueOf(id) }, null, null,
  74. null, null);
  75. if (cursor != null)
  76. cursor.moveToFirst();
  77. SQLRecord record = new SQLRecord(Integer.parseInt(cursor.getString(0)),
  78. Integer.parseInt(cursor.getString(1)), cursor.getString(2), cursor.getString(3),
  79. cursor.getString(4), cursor.getString(5),
  80. Integer.parseInt(cursor.getString(6)), cursor.getString(7),
  81. Integer.parseInt(cursor.getString(8)), cursor.getString(9));
  82. cursor.close();
  83. db.close();
  84. // return contact
  85. return record;
  86. }
  87. // Getting All Records
  88. public ArrayList<SQLRecord> getAllRecords() {
  89. ArrayList<SQLRecord> contactList = new ArrayList<SQLRecord>();
  90. // Select All Query
  91. String selectQuery = "SELECT * FROM " + TABLE_RECORDS;
  92. SQLiteDatabase db = this.getWritableDatabase();
  93. Cursor cursor = db.rawQuery(selectQuery, null);
  94. // looping through all rows and adding to list
  95. if (cursor.moveToFirst()) {
  96. do {
  97. SQLRecord record = new SQLRecord();
  98. record.setID(Integer.parseInt(cursor.getString(0)));
  99. record.setAttack_id(Integer.parseInt(cursor.getString(1)));
  100. record.setProtocol(cursor.getString(2));
  101. record.setType(cursor.getString(3));
  102. record.setTimestamp(cursor.getString(4));
  103. record.setLocalIP(cursor.getString(5));
  104. record.setLocalPort(Integer.parseInt(cursor.getString(6)));
  105. record.setRemoteIP(cursor.getString(7));
  106. record.setRemotePort(Integer.parseInt(cursor.getString(8)));
  107. record.setPacket(cursor.getString(9));
  108. // Adding record to list
  109. contactList.add(record);
  110. } while (cursor.moveToNext());
  111. }
  112. cursor.close();
  113. db.close();
  114. // return record list
  115. return contactList;
  116. }
  117. // Getting record Count
  118. public int getRecordCount() {
  119. String countQuery = "SELECT * FROM " + TABLE_RECORDS;
  120. SQLiteDatabase db = this.getReadableDatabase();
  121. Cursor cursor = db.rawQuery(countQuery, null);
  122. int result = cursor.getCount();
  123. cursor.close();
  124. // return count
  125. db.close();
  126. return result;
  127. }
  128. // Getting record Count
  129. public int getAttackCount() {
  130. String countQuery = "SELECT * FROM " + TABLE_RECORDS + " GROUP BY " + KEY_ATTACK_ID;
  131. SQLiteDatabase db = this.getReadableDatabase();
  132. Cursor cursor = db.rawQuery(countQuery, null);
  133. int result = cursor.getCount();
  134. cursor.close();
  135. // return count
  136. db.close();
  137. return result;
  138. }
  139. // Getting record Count
  140. public int getAttackPerProtokolCount(String protocol) {
  141. String countQuery = "SELECT * FROM " + TABLE_RECORDS + " WHERE " + KEY_PROTOCOL + " = " + "'" + protocol + "'" + " GROUP BY " + KEY_ATTACK_ID;
  142. SQLiteDatabase db = this.getReadableDatabase();
  143. Cursor cursor = db.rawQuery(countQuery, null);
  144. int result = cursor.getCount();
  145. cursor.close();
  146. // return count
  147. db.close();
  148. return result;
  149. }
  150. public SQLRecord getFirstEntry(){
  151. //TODO Fixen oder löschen
  152. SQLiteDatabase db = this.getReadableDatabase();
  153. Cursor cursor = db.query(TABLE_RECORDS, new String[] { KEY_ID,
  154. KEY_ATTACK_ID, KEY_PROTOCOL, KEY_TYPE, KEY_TIME, KEY_LOCAL_IP,
  155. KEY_LOCAL_PORT, KEY_REMOTE_IP, KEY_REMOTE_PORT, KEY_PACKET },
  156. KEY_ID + "=?", new String[] { "min(" + KEY_ID + ")" }, null,
  157. null, null, null);
  158. if (cursor != null)
  159. cursor.moveToFirst();
  160. SQLRecord record = new SQLRecord(Integer.parseInt(cursor.getString(0)),
  161. Integer.parseInt(cursor.getString(1)), cursor.getString(2), cursor.getString(3),
  162. cursor.getString(4), cursor.getString(5),
  163. Integer.parseInt(cursor.getString(6)), cursor.getString(7),
  164. Integer.parseInt(cursor.getString(8)), cursor.getString(9));
  165. return record;
  166. }
  167. //Delete all Data from Database
  168. public void clearData(){
  169. SQLiteDatabase db = this.getReadableDatabase();
  170. db.delete(TABLE_RECORDS, null, null);
  171. db.close();
  172. }
  173. }