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 devices = new ArrayList(); devices.add(thisDevice); dbh.insertSyncDevices(devices); } cursor.close(); // return record list db.close(); } thisDevice.setHighest_attack_id(attack_id - 1); return thisDevice; } }