package de.tudarmstadt.informatik.hostage.sync; /** * Created by Julien on 08.12.2014. */ import java.net.ServerSocket; import java.util.ArrayList; import java.util.List; import de.tudarmstadt.informatik.hostage.logging.NetworkRecord; import de.tudarmstadt.informatik.hostage.logging.SyncDevice; import de.tudarmstadt.informatik.hostage.logging.SyncRecord; import de.tudarmstadt.informatik.hostage.persistence.HostageDBOpenHelper; import de.tudarmstadt.informatik.hostage.system.Device; public class Synchronizer { private HostageDBOpenHelper dbh; public Synchronizer(HostageDBOpenHelper dbh){ super(); this.dbh = dbh; } public void pullNetworks(ServerSocket serverSocket){ ArrayList myNetworks = this.dbh.getAllBSSIDS(); ArrayList others = this.getOtherNetworkInformation(serverSocket, myNetworks); if (others != null && others.size() > 0){ this.dbh.updateNetworkInformation(others); } } public void pullNewDevices(ServerSocket serverSocket){ ArrayList myDevices = this.dbh.getAllDevicesIds(); ArrayList otherDeviceIds = this.getOtherDevies(serverSocket, myDevices); ArrayList otherDevices = new ArrayList(); for (String deviceId : otherDeviceIds){ SyncDevice device = new SyncDevice(); device.setDeviceID(deviceId); device.setHighest_attack_id(-1); device.setLast_sync_timestamp(0); otherDevices.add(device); } if (otherDevices != null && otherDevices.size() > 0) this.dbh.updateSyncDevices(otherDevices); } public void pullAttacks(ServerSocket serverSocket){ ArrayList myState = this.dbh.getSyncDevices(); ArrayList updates = this.getChanges(serverSocket, myState); if (updates != null && updates.size() > 0) this.dbh.insertSyncRecords(updates); } public void pushNetworkInformation(ServerSocket serverSocket){ ArrayList otherIDs = null; if (otherIDs != null){ ArrayList missingIds = this.dbh.getMissingDeviceIds(otherIDs); this.sendMissingDeviceIds(serverSocket, missingIds); } } public void pushUnsyncedRecords(ServerSocket serverSocket){ ArrayList otherDeviceState = null; if (otherDeviceState != null){ ArrayList unsynced = this.dbh.getUnsyncedAttacksFor(otherDeviceState, false); this.sendUnsyncedRecords(serverSocket, unsynced); } } public void pushDeviceIds(ServerSocket serverSocket){ ArrayList otherBSSIDs = null; if (otherBSSIDs != null){ ArrayList missings = this.dbh.getMissingNetworkRecords(otherBSSIDs); this.sendMissingNetworkRecords(serverSocket, missings); } } private ArrayList getOtherDevies(ServerSocket serverSocket, ArrayList ownDevices){ return null; } private ArrayList getOtherNetworkInformation(ServerSocket serverSocket, List records){ return null; } private ArrayList getChanges(ServerSocket serverSocket, ArrayList ownState){ return null; } private void sendMissingNetworkRecords(ServerSocket serverSocket, ArrayList m){ } private void sendMissingDeviceIds(ServerSocket serverSocket, ArrayList missingIds){ } private void sendUnsyncedRecords(ServerSocket serverSocket, ArrayList unsynced){ } }