aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Android_Studio/Tango.Integration/src/main
diff options
context:
space:
mode:
authorRoy <roy.mail.net@gmail.com>2017-12-26 21:16:15 +0200
committerRoy <roy.mail.net@gmail.com>2017-12-26 21:16:15 +0200
commit2ea2bb5bcd96045f1bd6cb4c3d8b8416dbaa05dc (patch)
treea21ff27fff08876e835df82c5242def1f0d09c17 /Software/Android_Studio/Tango.Integration/src/main
parent6450fc175114a6f8d0b75cb21386d1bb0c902711 (diff)
downloadTango-2ea2bb5bcd96045f1bd6cb4c3d8b8416dbaa05dc.tar.gz
Tango-2ea2bb5bcd96045f1bd6cb4c3d8b8416dbaa05dc.zip
MERGE
Diffstat (limited to 'Software/Android_Studio/Tango.Integration/src/main')
-rw-r--r--Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/providers/MachineIdentityProvider.java8
-rw-r--r--Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/ExternalBridgeService.java9
-rw-r--r--Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/services/SynchronizationService.java100
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