SlideShare a Scribd company logo
Creating an Uber Clone - Part XXIX
public class Ride implements PropertyBusinessObject {
public final LongProperty<Ride> userId = new LongProperty<>("userId");
public final Property<String, Ride> name = new Property<>("name");
public final Property<String, Ride> from = new Property<>("from");
public final Property<String, Ride> destination = new Property<>("destination");
private final PropertyIndex idx = new PropertyIndex(this, "Ride",
userId, name, from, destination);
@Override
public PropertyIndex getPropertyIndex() {
return idx;
}
}
Ride (Client Side)
public class DriverService {
private static String currentRide;
public static void fetchRideDetails(long id,
SuccessCallback<Ride> rideDetails) {
Rest.get(SERVER_URL + "ride/get").
acceptJson().queryParam("id", "" + id).
getAsJsonMap(response -> {
Map data = response.getResponseData();
if(data != null) {
Ride r = new Ride();
r.getPropertyIndex().populateFromMap(data);
rideDetails.onSucess(r);
}
});
}
public static boolean acceptRide(long id) {
Response<String> response =
Rest.get(SERVER_URL + "ride/accept").
acceptJson().
queryParam("token", UserService.getToken()).
queryParam("userId", "" + id).
getAsString();
if(response.getResponseCode() == 200) {
currentRide = response.getResponseData();
return true;
}
return false;
DriverService
public class DriverService {
private static String currentRide;
public static void fetchRideDetails(long id,
SuccessCallback<Ride> rideDetails) {
Rest.get(SERVER_URL + "ride/get").
acceptJson().queryParam("id", "" + id).
getAsJsonMap(response -> {
Map data = response.getResponseData();
if(data != null) {
Ride r = new Ride();
r.getPropertyIndex().populateFromMap(data);
rideDetails.onSucess(r);
}
});
}
public static boolean acceptRide(long id) {
Response<String> response =
Rest.get(SERVER_URL + "ride/accept").
acceptJson().
queryParam("token", UserService.getToken()).
queryParam("userId", "" + id).
getAsString();
if(response.getResponseCode() == 200) {
currentRide = response.getResponseData();
return true;
}
return false;
DriverService
public class DriverService {
private static String currentRide;
public static void fetchRideDetails(long id,
SuccessCallback<Ride> rideDetails) {
Rest.get(SERVER_URL + "ride/get").
acceptJson().queryParam("id", "" + id).
getAsJsonMap(response -> {
Map data = response.getResponseData();
if(data != null) {
Ride r = new Ride();
r.getPropertyIndex().populateFromMap(data);
rideDetails.onSucess(r);
}
});
}
public static boolean acceptRide(long id) {
Response<String> response =
Rest.get(SERVER_URL + "ride/accept").
acceptJson().
queryParam("token", UserService.getToken()).
queryParam("userId", "" + id).
getAsString();
if(response.getResponseCode() == 200) {
currentRide = response.getResponseData();
return true;
}
return false;
DriverService
}
public static boolean acceptRide(long id) {
Response<String> response =
Rest.get(SERVER_URL + "ride/accept").
acceptJson().
queryParam("token", UserService.getToken()).
queryParam("userId", "" + id).
getAsString();
if(response.getResponseCode() == 200) {
currentRide = response.getResponseData();
return true;
}
return false;
}
public static void startRide() {
Rest.post(SERVER_URL + "ride/start").
acceptJson().
queryParam("id", currentRide).
getAsString();
}
public static void finishRide() {
Rest.post(SERVER_URL + "ride/finish").
acceptJson().
queryParam("id", currentRide).
getAsString();
}
}
DriverService
public static void findLocation(String name,
SuccessCallback<Coord> location) {
Rest.get("https://maps.googleapis.com/maps/api/geocode/json").
queryParam("address", name).
queryParam("key", Globals.GOOGLE_GEOCODING_KEY).
getAsJsonMap(callbackMap -> {
Map data = callbackMap.getResponseData();
if(data != null) {
List results = (List)data.get("results");
if(results != null && results.size() > 0) {
Map firstResult = (Map)results.get(0);
Map geometryMap = (Map)firstResult.get("geometry");
Map locationMap = (Map)geometryMap.get("location");
double lat = Util.toDoubleValue(locationMap.get("lat"));
double lon = Util.toDoubleValue(locationMap.get("lng"));
location.onSucess(new Coord(lat, lon));
}
}
});
}
SearchService
public class UserService {
private static User me;
public static User getUser() {
return me;
}
public static String getToken() {
if(UberClone.isDriverMode()) {
return Preferences.get("driver-token", null);
} else {
return Preferences.get("token", null);
}
}
public static void loadUser() {
me = new User();
if(UberClone.isDriverMode()) {
PreferencesObject.create(me).setPrefix("driver").bind();
} else {
PreferencesObject.create(me).bind();
}
if(Display.getInstance().isSimulator()) {
Log.p("User details: " + me.getPropertyIndex().toString());
}
}
UserService
public class UserService {
private static User me;
public static User getUser() {
return me;
}
public static String getToken() {
if(UberClone.isDriverMode()) {
return Preferences.get("driver-token", null);
} else {
return Preferences.get("token", null);
}
}
public static void loadUser() {
me = new User();
if(UberClone.isDriverMode()) {
PreferencesObject.create(me).setPrefix("driver").bind();
} else {
PreferencesObject.create(me).bind();
}
if(Display.getInstance().isSimulator()) {
Log.p("User details: " + me.getPropertyIndex().toString());
}
}
UserService
public class UserService {
private static User me;
public static User getUser() {
return me;
}
public static String getToken() {
if(UberClone.isDriverMode()) {
return Preferences.get("driver-token", null);
} else {
return Preferences.get("token", null);
}
}
public static void loadUser() {
me = new User();
if(UberClone.isDriverMode()) {
PreferencesObject.create(me).setPrefix("driver").bind();
} else {
PreferencesObject.create(me).bind();
}
if(Display.getInstance().isSimulator()) {
Log.p("User details: " + me.getPropertyIndex().toString());
}
}
UserService
public static void registerPushToken(String pushToken) {
Rest.get(SERVER_URL + "user/setPushToken").
queryParam("token", getToken()).
queryParam("pushToken", pushToken).getAsStringAsync(
new Callback<Response<String>>() {
@Override
public void onSucess(Response<String> value) {
}
@Override
public void onError(Object sender, Throwable err, int errorCode,
String errorMessage) {
}
});
}
public static boolean addNewUser(User u) {
Response<String> token = Rest.post(SERVER_URL + "user/add").
jsonContent().
body(u.getPropertyIndex().toJSON()).getAsString();
if(token.getResponseCode() != 200) {
return false;
}
UserService
public static boolean addNewUser(User u) {
Response<String> token = Rest.post(SERVER_URL + "user/add").
jsonContent().
body(u.getPropertyIndex().toJSON()).getAsString();
if(token.getResponseCode() != 200) {
return false;
}
if(UberClone.isDriverMode()) {
Preferences.set("driver-token", token.getResponseData());
registerPush();
} else {
Preferences.set("token", token.getResponseData());
}
return true;
}
public static void loginWithPhone(String phoneNumber,
String password, final SuccessCallback<User> onSuccess,
final FailureCallback<Object> onError) {
Rest.get(SERVER_URL + "user/login").
acceptJson().
queryParam("password", password).
queryParam("phone", phoneNumber).
UserService

More Related Content

Similar to Creating an Uber Clone - Part XXIX.pdf

Creating an Uber Clone - Part XVI.pdf
Creating an Uber Clone - Part XVI.pdfCreating an Uber Clone - Part XVI.pdf
Creating an Uber Clone - Part XVI.pdf
ShaiAlmog1
 
Creating an Uber Clone - Part XXX - Transcript.pdf
Creating an Uber Clone - Part XXX - Transcript.pdfCreating an Uber Clone - Part XXX - Transcript.pdf
Creating an Uber Clone - Part XXX - Transcript.pdf
ShaiAlmog1
 
Migrating from Flux to Redux. Why and how.
Migrating from Flux to Redux. Why and how.Migrating from Flux to Redux. Why and how.
Migrating from Flux to Redux. Why and how.
Astrails
 
Creating an Uber Clone - Part XV - Transcript.pdf
Creating an Uber Clone - Part XV - Transcript.pdfCreating an Uber Clone - Part XV - Transcript.pdf
Creating an Uber Clone - Part XV - Transcript.pdf
ShaiAlmog1
 
Developing Apps for Emerging Markets
Developing Apps for Emerging MarketsDeveloping Apps for Emerging Markets
Developing Apps for Emerging Markets
Annyce Davis
 
React Native: Developing an app similar to Uber in JavaScript
React Native: Developing an app similar to Uber in JavaScriptReact Native: Developing an app similar to Uber in JavaScript
React Native: Developing an app similar to Uber in JavaScript
Caio Ariede
 
Express JS
Express JSExpress JS
Express JS
Alok Guha
 
Angular Promises and Advanced Routing
Angular Promises and Advanced RoutingAngular Promises and Advanced Routing
Angular Promises and Advanced Routing
Alexe Bogdan
 
import java-util--- import java-io--- class Vertex { -- Constructo.docx
import java-util--- import java-io---   class Vertex {   -- Constructo.docximport java-util--- import java-io---   class Vertex {   -- Constructo.docx
import java-util--- import java-io--- class Vertex { -- Constructo.docx
Blake0FxCampbelld
 
Functional programming using underscorejs
Functional programming using underscorejsFunctional programming using underscorejs
Functional programming using underscorejs
偉格 高
 
assignmentTwoCar.javaassignmentTwoCar.javapackage assignmentTw.docx
assignmentTwoCar.javaassignmentTwoCar.javapackage assignmentTw.docxassignmentTwoCar.javaassignmentTwoCar.javapackage assignmentTw.docx
assignmentTwoCar.javaassignmentTwoCar.javapackage assignmentTw.docx
ssuser562afc1
 
Spca2014 hillier build your_own_rest_service
Spca2014 hillier build your_own_rest_serviceSpca2014 hillier build your_own_rest_service
Spca2014 hillier build your_own_rest_service
NCCOMMS
 
Angular Workshop_Sarajevo2
Angular Workshop_Sarajevo2Angular Workshop_Sarajevo2
Angular Workshop_Sarajevo2
Christoffer Noring
 
Web2Day 2017 - Concilier DomainDriveDesign et API REST
Web2Day 2017 - Concilier DomainDriveDesign et API RESTWeb2Day 2017 - Concilier DomainDriveDesign et API REST
Web2Day 2017 - Concilier DomainDriveDesign et API REST
Nicolas Faugout
 
No internet? No Problem!
No internet? No Problem!No internet? No Problem!
No internet? No Problem!
Annyce Davis
 
Assignment7.pdf
Assignment7.pdfAssignment7.pdf
Assignment7.pdf
dash41
 
app.js.docx
app.js.docxapp.js.docx
app.js.docx
armitageclaire49
 
Developing web-apps like it's 2013
Developing web-apps like it's 2013Developing web-apps like it's 2013
Developing web-apps like it's 2013
Laurent_VB
 
Web+GISという視点から見たGISの方向性
Web+GISという視点から見たGISの方向性Web+GISという視点から見たGISの方向性
Web+GISという視点から見たGISの方向性
Hidenori Fujimura
 
AngularJS Services
AngularJS ServicesAngularJS Services
AngularJS Services
Eyal Vardi
 

Similar to Creating an Uber Clone - Part XXIX.pdf (20)

Creating an Uber Clone - Part XVI.pdf
Creating an Uber Clone - Part XVI.pdfCreating an Uber Clone - Part XVI.pdf
Creating an Uber Clone - Part XVI.pdf
 
Creating an Uber Clone - Part XXX - Transcript.pdf
Creating an Uber Clone - Part XXX - Transcript.pdfCreating an Uber Clone - Part XXX - Transcript.pdf
Creating an Uber Clone - Part XXX - Transcript.pdf
 
Migrating from Flux to Redux. Why and how.
Migrating from Flux to Redux. Why and how.Migrating from Flux to Redux. Why and how.
Migrating from Flux to Redux. Why and how.
 
Creating an Uber Clone - Part XV - Transcript.pdf
Creating an Uber Clone - Part XV - Transcript.pdfCreating an Uber Clone - Part XV - Transcript.pdf
Creating an Uber Clone - Part XV - Transcript.pdf
 
Developing Apps for Emerging Markets
Developing Apps for Emerging MarketsDeveloping Apps for Emerging Markets
Developing Apps for Emerging Markets
 
React Native: Developing an app similar to Uber in JavaScript
React Native: Developing an app similar to Uber in JavaScriptReact Native: Developing an app similar to Uber in JavaScript
React Native: Developing an app similar to Uber in JavaScript
 
Express JS
Express JSExpress JS
Express JS
 
Angular Promises and Advanced Routing
Angular Promises and Advanced RoutingAngular Promises and Advanced Routing
Angular Promises and Advanced Routing
 
import java-util--- import java-io--- class Vertex { -- Constructo.docx
import java-util--- import java-io---   class Vertex {   -- Constructo.docximport java-util--- import java-io---   class Vertex {   -- Constructo.docx
import java-util--- import java-io--- class Vertex { -- Constructo.docx
 
Functional programming using underscorejs
Functional programming using underscorejsFunctional programming using underscorejs
Functional programming using underscorejs
 
assignmentTwoCar.javaassignmentTwoCar.javapackage assignmentTw.docx
assignmentTwoCar.javaassignmentTwoCar.javapackage assignmentTw.docxassignmentTwoCar.javaassignmentTwoCar.javapackage assignmentTw.docx
assignmentTwoCar.javaassignmentTwoCar.javapackage assignmentTw.docx
 
Spca2014 hillier build your_own_rest_service
Spca2014 hillier build your_own_rest_serviceSpca2014 hillier build your_own_rest_service
Spca2014 hillier build your_own_rest_service
 
Angular Workshop_Sarajevo2
Angular Workshop_Sarajevo2Angular Workshop_Sarajevo2
Angular Workshop_Sarajevo2
 
Web2Day 2017 - Concilier DomainDriveDesign et API REST
Web2Day 2017 - Concilier DomainDriveDesign et API RESTWeb2Day 2017 - Concilier DomainDriveDesign et API REST
Web2Day 2017 - Concilier DomainDriveDesign et API REST
 
No internet? No Problem!
No internet? No Problem!No internet? No Problem!
No internet? No Problem!
 
Assignment7.pdf
Assignment7.pdfAssignment7.pdf
Assignment7.pdf
 
app.js.docx
app.js.docxapp.js.docx
app.js.docx
 
Developing web-apps like it's 2013
Developing web-apps like it's 2013Developing web-apps like it's 2013
Developing web-apps like it's 2013
 
Web+GISという視点から見たGISの方向性
Web+GISという視点から見たGISの方向性Web+GISという視点から見たGISの方向性
Web+GISという視点から見たGISの方向性
 
AngularJS Services
AngularJS ServicesAngularJS Services
AngularJS Services
 

More from ShaiAlmog1

The Duck Teaches Learn to debug from the masters. Local to production- kill ...
The Duck Teaches  Learn to debug from the masters. Local to production- kill ...The Duck Teaches  Learn to debug from the masters. Local to production- kill ...
The Duck Teaches Learn to debug from the masters. Local to production- kill ...
ShaiAlmog1
 
create-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdfcreate-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdf
ShaiAlmog1
 
create-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdfcreate-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdf
ShaiAlmog1
 
create-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdfcreate-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdf
ShaiAlmog1
 
create-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdfcreate-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdf
ShaiAlmog1
 
create-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdfcreate-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdf
ShaiAlmog1
 
create-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdfcreate-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdf
ShaiAlmog1
 
create-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdfcreate-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdf
ShaiAlmog1
 
create-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdfcreate-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdf
ShaiAlmog1
 
create-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdfcreate-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdf
ShaiAlmog1
 
create-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdfcreate-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdf
ShaiAlmog1
 
create-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfcreate-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdf
ShaiAlmog1
 
create-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdfcreate-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdf
ShaiAlmog1
 
Creating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdfCreating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdf
ShaiAlmog1
 
Creating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdfCreating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdf
ShaiAlmog1
 
Creating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdfCreating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdf
ShaiAlmog1
 
Creating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdfCreating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdf
ShaiAlmog1
 
Creating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdfCreating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdf
ShaiAlmog1
 
Creating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdfCreating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdf
ShaiAlmog1
 
Creating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdfCreating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdf
ShaiAlmog1
 

More from ShaiAlmog1 (20)

The Duck Teaches Learn to debug from the masters. Local to production- kill ...
The Duck Teaches  Learn to debug from the masters. Local to production- kill ...The Duck Teaches  Learn to debug from the masters. Local to production- kill ...
The Duck Teaches Learn to debug from the masters. Local to production- kill ...
 
create-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdfcreate-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdf
 
create-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdfcreate-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdf
 
create-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdfcreate-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdf
 
create-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdfcreate-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdf
 
create-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdfcreate-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdf
 
create-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdfcreate-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdf
 
create-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdfcreate-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdf
 
create-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdfcreate-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdf
 
create-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdfcreate-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdf
 
create-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdfcreate-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdf
 
create-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfcreate-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdf
 
create-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdfcreate-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdf
 
Creating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdfCreating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdf
 
Creating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdfCreating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdf
 
Creating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdfCreating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdf
 
Creating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdfCreating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdf
 
Creating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdfCreating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdf
 
Creating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdfCreating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdf
 
Creating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdfCreating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdf
 

Recently uploaded

Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
HarisZaheer8
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
Intelisync
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 

Recently uploaded (20)

Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 

Creating an Uber Clone - Part XXIX.pdf

  • 1. Creating an Uber Clone - Part XXIX
  • 2. public class Ride implements PropertyBusinessObject { public final LongProperty<Ride> userId = new LongProperty<>("userId"); public final Property<String, Ride> name = new Property<>("name"); public final Property<String, Ride> from = new Property<>("from"); public final Property<String, Ride> destination = new Property<>("destination"); private final PropertyIndex idx = new PropertyIndex(this, "Ride", userId, name, from, destination); @Override public PropertyIndex getPropertyIndex() { return idx; } } Ride (Client Side)
  • 3. public class DriverService { private static String currentRide; public static void fetchRideDetails(long id, SuccessCallback<Ride> rideDetails) { Rest.get(SERVER_URL + "ride/get"). acceptJson().queryParam("id", "" + id). getAsJsonMap(response -> { Map data = response.getResponseData(); if(data != null) { Ride r = new Ride(); r.getPropertyIndex().populateFromMap(data); rideDetails.onSucess(r); } }); } public static boolean acceptRide(long id) { Response<String> response = Rest.get(SERVER_URL + "ride/accept"). acceptJson(). queryParam("token", UserService.getToken()). queryParam("userId", "" + id). getAsString(); if(response.getResponseCode() == 200) { currentRide = response.getResponseData(); return true; } return false; DriverService
  • 4. public class DriverService { private static String currentRide; public static void fetchRideDetails(long id, SuccessCallback<Ride> rideDetails) { Rest.get(SERVER_URL + "ride/get"). acceptJson().queryParam("id", "" + id). getAsJsonMap(response -> { Map data = response.getResponseData(); if(data != null) { Ride r = new Ride(); r.getPropertyIndex().populateFromMap(data); rideDetails.onSucess(r); } }); } public static boolean acceptRide(long id) { Response<String> response = Rest.get(SERVER_URL + "ride/accept"). acceptJson(). queryParam("token", UserService.getToken()). queryParam("userId", "" + id). getAsString(); if(response.getResponseCode() == 200) { currentRide = response.getResponseData(); return true; } return false; DriverService
  • 5. public class DriverService { private static String currentRide; public static void fetchRideDetails(long id, SuccessCallback<Ride> rideDetails) { Rest.get(SERVER_URL + "ride/get"). acceptJson().queryParam("id", "" + id). getAsJsonMap(response -> { Map data = response.getResponseData(); if(data != null) { Ride r = new Ride(); r.getPropertyIndex().populateFromMap(data); rideDetails.onSucess(r); } }); } public static boolean acceptRide(long id) { Response<String> response = Rest.get(SERVER_URL + "ride/accept"). acceptJson(). queryParam("token", UserService.getToken()). queryParam("userId", "" + id). getAsString(); if(response.getResponseCode() == 200) { currentRide = response.getResponseData(); return true; } return false; DriverService
  • 6. } public static boolean acceptRide(long id) { Response<String> response = Rest.get(SERVER_URL + "ride/accept"). acceptJson(). queryParam("token", UserService.getToken()). queryParam("userId", "" + id). getAsString(); if(response.getResponseCode() == 200) { currentRide = response.getResponseData(); return true; } return false; } public static void startRide() { Rest.post(SERVER_URL + "ride/start"). acceptJson(). queryParam("id", currentRide). getAsString(); } public static void finishRide() { Rest.post(SERVER_URL + "ride/finish"). acceptJson(). queryParam("id", currentRide). getAsString(); } } DriverService
  • 7. public static void findLocation(String name, SuccessCallback<Coord> location) { Rest.get("https://maps.googleapis.com/maps/api/geocode/json"). queryParam("address", name). queryParam("key", Globals.GOOGLE_GEOCODING_KEY). getAsJsonMap(callbackMap -> { Map data = callbackMap.getResponseData(); if(data != null) { List results = (List)data.get("results"); if(results != null && results.size() > 0) { Map firstResult = (Map)results.get(0); Map geometryMap = (Map)firstResult.get("geometry"); Map locationMap = (Map)geometryMap.get("location"); double lat = Util.toDoubleValue(locationMap.get("lat")); double lon = Util.toDoubleValue(locationMap.get("lng")); location.onSucess(new Coord(lat, lon)); } } }); } SearchService
  • 8. public class UserService { private static User me; public static User getUser() { return me; } public static String getToken() { if(UberClone.isDriverMode()) { return Preferences.get("driver-token", null); } else { return Preferences.get("token", null); } } public static void loadUser() { me = new User(); if(UberClone.isDriverMode()) { PreferencesObject.create(me).setPrefix("driver").bind(); } else { PreferencesObject.create(me).bind(); } if(Display.getInstance().isSimulator()) { Log.p("User details: " + me.getPropertyIndex().toString()); } } UserService
  • 9. public class UserService { private static User me; public static User getUser() { return me; } public static String getToken() { if(UberClone.isDriverMode()) { return Preferences.get("driver-token", null); } else { return Preferences.get("token", null); } } public static void loadUser() { me = new User(); if(UberClone.isDriverMode()) { PreferencesObject.create(me).setPrefix("driver").bind(); } else { PreferencesObject.create(me).bind(); } if(Display.getInstance().isSimulator()) { Log.p("User details: " + me.getPropertyIndex().toString()); } } UserService
  • 10. public class UserService { private static User me; public static User getUser() { return me; } public static String getToken() { if(UberClone.isDriverMode()) { return Preferences.get("driver-token", null); } else { return Preferences.get("token", null); } } public static void loadUser() { me = new User(); if(UberClone.isDriverMode()) { PreferencesObject.create(me).setPrefix("driver").bind(); } else { PreferencesObject.create(me).bind(); } if(Display.getInstance().isSimulator()) { Log.p("User details: " + me.getPropertyIndex().toString()); } } UserService
  • 11. public static void registerPushToken(String pushToken) { Rest.get(SERVER_URL + "user/setPushToken"). queryParam("token", getToken()). queryParam("pushToken", pushToken).getAsStringAsync( new Callback<Response<String>>() { @Override public void onSucess(Response<String> value) { } @Override public void onError(Object sender, Throwable err, int errorCode, String errorMessage) { } }); } public static boolean addNewUser(User u) { Response<String> token = Rest.post(SERVER_URL + "user/add"). jsonContent(). body(u.getPropertyIndex().toJSON()).getAsString(); if(token.getResponseCode() != 200) { return false; } UserService
  • 12. public static boolean addNewUser(User u) { Response<String> token = Rest.post(SERVER_URL + "user/add"). jsonContent(). body(u.getPropertyIndex().toJSON()).getAsString(); if(token.getResponseCode() != 200) { return false; } if(UberClone.isDriverMode()) { Preferences.set("driver-token", token.getResponseData()); registerPush(); } else { Preferences.set("token", token.getResponseData()); } return true; } public static void loginWithPhone(String phoneNumber, String password, final SuccessCallback<User> onSuccess, final FailureCallback<Object> onError) { Rest.get(SERVER_URL + "user/login"). acceptJson(). queryParam("password", password). queryParam("phone", phoneNumber). UserService