SyncDevice.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package de.tudarmstadt.informatik.hostage.logging;
  2. import android.content.SharedPreferences;
  3. import android.database.Cursor;
  4. import android.database.sqlite.SQLiteDatabase;
  5. import android.preference.PreferenceManager;
  6. import java.util.ArrayList;
  7. import java.util.UUID;
  8. import de.tudarmstadt.informatik.hostage.persistence.HostageDBContract;
  9. import de.tudarmstadt.informatik.hostage.persistence.HostageDBOpenHelper;
  10. import de.tudarmstadt.informatik.hostage.ui.activity.MainActivity;
  11. /**
  12. * Created by Julien on 04.12.2014.
  13. */
  14. public class SyncDevice {
  15. private long highest_attack_id;
  16. private String deviceID;
  17. private long last_sync_timestamp;
  18. public long getHighest_attack_id(){return this.highest_attack_id;}
  19. public void setHighest_attack_id(long i){this.highest_attack_id = i;}
  20. /**
  21. * @return the deviceID
  22. */
  23. public String getDeviceID() {
  24. return deviceID;
  25. }
  26. /**
  27. * @param deviceID the deviceID to set
  28. */
  29. public void setDeviceID(String deviceID) {
  30. this.deviceID = deviceID;
  31. }
  32. public void setLast_sync_timestamp(long t){this.last_sync_timestamp = t;}
  33. public long getLast_sync_timestamp(){return this.last_sync_timestamp;}
  34. public static SyncDevice thisDevice = null;
  35. /**
  36. * Returns a SyncDevice Object representing the current device.
  37. * @return {@link de.tudarmstadt.informatik.hostage.logging.SyncDevice}
  38. */
  39. public static SyncDevice currentDevice()
  40. {
  41. SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(MainActivity.getContext());
  42. int attack_id = pref.getInt("ATTACK_ID_COUNTER", 0);
  43. // IF THE SHARED INSTANCE IS NOT AVAILABLE GET IT
  44. if (thisDevice == null){
  45. String deviceUUID = pref.getString("CURRENT_DEVICE_IDENTIFIER", UUID.randomUUID().toString());
  46. String selectQuery = "SELECT * FROM " + HostageDBContract.SyncDeviceEntry.TABLE_NAME + " D "
  47. + " WHERE " + " d." + HostageDBContract.SyncDeviceEntry.COLUMN_NAME_DEVICE_ID + " = " + deviceUUID;
  48. HostageDBOpenHelper dbh = new HostageDBOpenHelper(MainActivity.context);
  49. SQLiteDatabase db = dbh.getReadableDatabase();
  50. Cursor cursor = db.rawQuery(selectQuery, null);
  51. // IF WE ALREADY HAVE A SYNC DEVICE FOR THE GIVEN DEVICE UUID
  52. if (cursor.moveToFirst()) {
  53. SyncDevice record = new SyncDevice();
  54. record.setDeviceID(cursor.getString(0));
  55. record.setLast_sync_timestamp(cursor.getLong(1));
  56. record.setHighest_attack_id(cursor.getLong(2));
  57. thisDevice = record;
  58. } else {
  59. // CREATE A NEW SYNC DEVICE
  60. thisDevice = new SyncDevice();
  61. // ITS IMPORTANT TO CREATE A COMPLETE NEW DEVICE UUID
  62. deviceUUID = UUID.randomUUID().toString();
  63. thisDevice.setDeviceID(deviceUUID);
  64. SharedPreferences.Editor editor = pref.edit();
  65. editor.putString(thisDevice.getDeviceID(), thisDevice.getDeviceID());
  66. editor.commit();
  67. thisDevice.setLast_sync_timestamp(0);
  68. thisDevice.setHighest_attack_id(-1);
  69. ArrayList<SyncDevice> devices = new ArrayList<SyncDevice>();
  70. devices.add(thisDevice);
  71. dbh.insertSyncDevices(devices);
  72. }
  73. cursor.close();
  74. // return record list
  75. db.close();
  76. }
  77. thisDevice.setHighest_attack_id(attack_id - 1);
  78. return thisDevice;
  79. }
  80. }