diff options
| author | Roy <roy.mail.net@gmail.com> | 2017-12-26 21:16:15 +0200 |
|---|---|---|
| committer | Roy <roy.mail.net@gmail.com> | 2017-12-26 21:16:15 +0200 |
| commit | 2ea2bb5bcd96045f1bd6cb4c3d8b8416dbaa05dc (patch) | |
| tree | a21ff27fff08876e835df82c5242def1f0d09c17 /Software/Android_Studio/Tango.Integration | |
| parent | 6450fc175114a6f8d0b75cb21386d1bb0c902711 (diff) | |
| download | Tango-2ea2bb5bcd96045f1bd6cb4c3d8b8416dbaa05dc.tar.gz Tango-2ea2bb5bcd96045f1bd6cb4c3d8b8416dbaa05dc.zip | |
MERGE
Diffstat (limited to 'Software/Android_Studio/Tango.Integration')
3 files changed, 107 insertions, 10 deletions
diff --git a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/providers/MachineIdentityProvider.java b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/providers/MachineIdentityProvider.java index b4f2d3c4d..c72b9cea4 100644 --- a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/providers/MachineIdentityProvider.java +++ b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/providers/MachineIdentityProvider.java @@ -1,4 +1,8 @@ package com.twine.tango.integration.providers; +import com.twine.tango.dal.dao.TangoDAO; +import com.twine.tango.dal.entities.Machine; + +import static br.com.zbra.androidlinq.Linq.stream; /** @@ -6,10 +10,10 @@ package com.twine.tango.integration.providers; */ public class MachineIdentityProvider implements IMachineIdentityProvider { - @Override public String getSerialNumber() { - return "1234"; + Machine machine = stream(TangoDAO.getAllMachines()).firstOrNull(); + return machine != null ? machine.getSerialNumber() : "0000"; } } diff --git a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/ExternalBridgeService.java b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/ExternalBridgeService.java index 709d5a271..24ae72eba 100644 --- a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/ExternalBridgeService.java +++ b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/ExternalBridgeService.java @@ -22,6 +22,7 @@ import com.twine.tango.pmr.integration.ExternalBridgeUdpDiscoveryPacketOuterClas import com.twine.tango.pmr.integration.ExternalClientLoginRequestOuterClass.ExternalClientLoginRequest; import com.twine.tango.pmr.integration.ExternalClientLoginResponseOuterClass.ExternalClientLoginResponse; import com.twine.tango.transport.ITransportAdapter; +import com.twine.tango.transport.ResponseErrorException; import com.twine.tango.transport.adapters.TcpTransportAdapter; import com.twine.tango.transport.transporters.ProtoTransporter; @@ -198,7 +199,7 @@ public class ExternalBridgeService extends ProtoTransporter implements IExternal if (container.getType() == MessageType.ExternalClientLoginRequest) { ExternalClientLoginRequest request = MessageFactory.parseMessageFromContainer(container); - if (request.getKey().equals("1234")) + if (request.getPassword().equals("Aa123456")) //TODO: Compare with global machine settings password... { getAdapters().get(0).setAuthenticated(true); sendResponse(MessageFactory.createTangoMessage( @@ -235,21 +236,23 @@ public class ExternalBridgeService extends ProtoTransporter implements IExternal //Route to machine... if (container.getContinuous()) { + //noinspection unchecked machineOperator.sendContinuousRequest(MessageFactory.createTangoMessage(container, message)).subscribe((response) -> { sendResponse((TangoMessage<? extends GeneratedMessageV3>) response); }, (ex) -> { - + sendResponse((TangoMessage<? extends GeneratedMessageV3>) ((ResponseErrorException)ex).getResponse()); }); } else { + //noinspection unchecked machineOperator.sendRequest(MessageFactory.createTangoMessage(container, message)).subscribe((response) -> { sendResponse((TangoMessage<? extends GeneratedMessageV3>) response); }, (ex) -> { - + sendResponse((TangoMessage<? extends GeneratedMessageV3>) ((ResponseErrorException)ex).getResponse()); }); } } diff --git a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/SynchronizationService.java b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/SynchronizationService.java index 0f3d98982..53b4c8194 100644 --- a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/SynchronizationService.java +++ b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/SynchronizationService.java @@ -1,5 +1,7 @@ package com.twine.tango.integration.services; +import android.os.AsyncTask; + import com.elvishew.xlog.XLog; import com.google.protobuf.ByteString; import com.snatik.storage.Storage; @@ -10,12 +12,18 @@ import com.twine.tango.integration.services.IExternalBridgeService.MessageReceiv import com.twine.tango.pmr.MessageFactory; import com.twine.tango.pmr.TangoMessage; import com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType; +import com.twine.tango.pmr.integration.DirectSynchronizationRequestOuterClass.DirectSynchronizationRequest; +import com.twine.tango.pmr.integration.DirectSynchronizationResponseOuterClass.DirectSynchronizationResponse; +import com.twine.tango.pmr.integration.OverrideDataBaseRequestOuterClass.OverrideDataBaseRequest; +import com.twine.tango.pmr.integration.OverrideDataBaseResponseOuterClass.OverrideDataBaseResponse; import com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest; import com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse; import com.twine.tango.pmr.synchronization.SynchronizeDBRequestOuterClass.SynchronizeDBRequest; import com.twine.tango.web.WebApiFactory; import com.twine.tango.web.ISynchronizationAPI; +import java.io.IOException; + import javax.inject.Inject; import io.reactivex.Completable; @@ -39,14 +47,96 @@ public class SynchronizationService implements ISynchronizationService { this.machineIdentityProvider = machineIdentityProvider; this.bridgeService = bridgeService; - //this.bridgeService.registerMessageHandler(this::handleCalculateRequest, MessageType.CalculateRequest); + this.bridgeService.registerMessageHandler(this::handleDirectSynchronizationRequest, MessageType.DirectSynchronizationRequest); + this.bridgeService.<OverrideDataBaseRequest>registerMessageHandler(this::handleOverrideDataBaseRequest, MessageType.OverrideDataBaseRequest); + } - private void handleCalculateRequest(Object o, MessageReceivedArgs<CalculateRequest> e) + private void handleOverrideDataBaseRequest(Object o, MessageReceivedArgs<OverrideDataBaseRequest> request) { - CalculateResponse response = CalculateResponse.newBuilder().setSum(e.getMessage().getA() + e.getMessage().getB()).build(); - TangoMessage<CalculateResponse> tangoMessage = MessageFactory.createTangoMessage(CalculateResponse.class, response, e.getContainer().getToken()); - bridgeService.sendResponse(tangoMessage); + AsyncTask.execute(() -> + { + try + { + //Backup DataBase. + TangoDB.backup(); + + //Replace Database. + TangoDB.replace(request.getMessage().getRemoteDB().toByteArray()); + + //Create response. + OverrideDataBaseResponse response = OverrideDataBaseResponse.newBuilder() + .setSuccessful(true) + .build(); + + TangoMessage<OverrideDataBaseResponse> message = MessageFactory.createTangoMessage( + OverrideDataBaseResponse.class, + response); + + bridgeService.sendResponse(message, request.getContainer().getToken()).subscribe(() -> + { + + },(ex) -> + { + XLog.e(ex); + }); + + } catch (Exception e) + { + XLog.e(e); + //Create response. + OverrideDataBaseResponse response = OverrideDataBaseResponse.newBuilder() + .setSuccessful(false) + .build(); + + TangoMessage<OverrideDataBaseResponse> message = MessageFactory.createTangoMessage( + OverrideDataBaseResponse.class, + response); + + bridgeService.sendResponse(message, request.getContainer().getToken()).subscribe(() -> + { + + },(ex) -> + { + XLog.e(ex); + }); + } + }); + } + + private void handleDirectSynchronizationRequest(Object o, MessageReceivedArgs<DirectSynchronizationRequest> request) + { + AsyncTask.execute(() -> + { + try + { + Storage storage = new Storage(ContextHelper.getApplicationContext()); + + //Read current DB file bytes. + byte[] data = storage.readFile(TangoDB.getDataBasePath()); + + //Create synchronization response. + DirectSynchronizationResponse response = DirectSynchronizationResponse.newBuilder() + .setLocalDB(ByteString.copyFrom(data)) + .build(); + + TangoMessage<DirectSynchronizationResponse> message = MessageFactory.createTangoMessage( + DirectSynchronizationResponse.class, + response); + + bridgeService.sendResponse(message, request.getContainer().getToken()).subscribe(() -> + { + + },(ex) -> + { + XLog.e(ex); + }); + + } catch (Exception e) + { + XLog.e(e); + } + }); } @Override |
