123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package de.tudarmstadt.informatik.hostage.logging;
- import android.content.SharedPreferences;
- import android.database.Cursor;
- import android.database.sqlite.SQLiteDatabase;
- import android.preference.PreferenceManager;
- import java.util.ArrayList;
- import java.util.UUID;
- import de.tudarmstadt.informatik.hostage.persistence.HostageDBContract;
- import de.tudarmstadt.informatik.hostage.persistence.HostageDBOpenHelper;
- import de.tudarmstadt.informatik.hostage.ui.activity.MainActivity;
- /**
- * Created by Julien on 04.12.2014.
- */
- public class SyncDevice {
- private long highest_attack_id;
- private String deviceID;
- private long last_sync_timestamp;
- public long getHighest_attack_id(){return this.highest_attack_id;}
- public void setHighest_attack_id(long i){this.highest_attack_id = i;}
- /**
- * @return the deviceID
- */
- public String getDeviceID() {
- return deviceID;
- }
- /**
- * @param deviceID the deviceID to set
- */
- public void setDeviceID(String deviceID) {
- this.deviceID = deviceID;
- }
- public void setLast_sync_timestamp(long t){this.last_sync_timestamp = t;}
- public long getLast_sync_timestamp(){return this.last_sync_timestamp;}
- public static SyncDevice thisDevice = null;
- /**
- * Returns a SyncDevice Object representing the current device.
- * @return {@link de.tudarmstadt.informatik.hostage.logging.SyncDevice}
- */
- public static SyncDevice currentDevice()
- {
- SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(MainActivity.getContext());
- int attack_id = pref.getInt("ATTACK_ID_COUNTER", 0);
- // IF THE SHARED INSTANCE IS NOT AVAILABLE GET IT
- if (thisDevice == null){
- String deviceUUID = pref.getString("CURRENT_DEVICE_IDENTIFIER", UUID.randomUUID().toString());
- String selectQuery = "SELECT * FROM " + HostageDBContract.SyncDeviceEntry.TABLE_NAME + " D "
- + " WHERE " + " d." + HostageDBContract.SyncDeviceEntry.COLUMN_NAME_DEVICE_ID + " = " + deviceUUID;
- HostageDBOpenHelper dbh = new HostageDBOpenHelper(MainActivity.context);
- SQLiteDatabase db = dbh.getReadableDatabase();
- Cursor cursor = db.rawQuery(selectQuery, null);
- // IF WE ALREADY HAVE A SYNC DEVICE FOR THE GIVEN DEVICE UUID
- if (cursor.moveToFirst()) {
- SyncDevice record = new SyncDevice();
- record.setDeviceID(cursor.getString(0));
- record.setLast_sync_timestamp(cursor.getLong(1));
- record.setHighest_attack_id(cursor.getLong(2));
- thisDevice = record;
- } else {
- // CREATE A NEW SYNC DEVICE
- thisDevice = new SyncDevice();
- // ITS IMPORTANT TO CREATE A COMPLETE NEW DEVICE UUID
- deviceUUID = UUID.randomUUID().toString();
- thisDevice.setDeviceID(deviceUUID);
- SharedPreferences.Editor editor = pref.edit();
- editor.putString(thisDevice.getDeviceID(), thisDevice.getDeviceID());
- editor.commit();
- thisDevice.setLast_sync_timestamp(0);
- thisDevice.setHighest_attack_id(-1);
- ArrayList<SyncDevice> devices = new ArrayList<SyncDevice>();
- devices.add(thisDevice);
- dbh.insertSyncDevices(devices);
- }
- cursor.close();
- // return record list
- db.close();
- }
- thisDevice.setHighest_attack_id(attack_id - 1);
- return thisDevice;
- }
- }
|