Skip to content

Commit d650570

Browse files
authored
SDK-1183 create example scenarios for geography apis (#64)
1 parent fa68d12 commit d650570

14 files changed

+517
-43
lines changed

examples/src/main/java/com/expediagroup/sdk/rapid/examples/Constants.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,15 @@
33
public class Constants {
44
public static final String TEST_PROPERTY_ID = "11775754";
55

6+
public static final String TEST_REGION_ID = "178248";
7+
8+
public static final String TEST_REGION_ID_WITH_MULTIPOLYGON = "553248635740541470";
9+
10+
public static final String TEST_ANCESTOR_ID = "602962";
11+
612
public static final String CUSTOMER_IP = "5.5.5.5";
713

814
public static final String SANDBOX_URL = "https://test.ean.com/";
15+
16+
public static final String CUSTOMER_SESSION_ID = "123455656565";
917
}

examples/src/main/java/com/expediagroup/sdk/rapid/examples/RapidSdkDemoApplication.java

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@
33
import com.expediagroup.sdk.rapid.examples.salesprofiles.DefaultRapidPartnerProfile;
44
import com.expediagroup.sdk.rapid.examples.scenarios.booking.MultiRoomHoldAndResumeBookScenario;
55
import com.expediagroup.sdk.rapid.examples.scenarios.booking.SingleRoomBookScenario;
6+
import com.expediagroup.sdk.rapid.examples.scenarios.geography.GetListOfRegionNamesScenario;
7+
import com.expediagroup.sdk.rapid.examples.scenarios.geography.GetRegionByAncestorIdScenario;
8+
import com.expediagroup.sdk.rapid.examples.scenarios.geography.GetRegionDetailsAndPropertyIdsScenario;
9+
import com.expediagroup.sdk.rapid.examples.scenarios.geography.ParseRegionAncestorsScenario;
10+
import com.expediagroup.sdk.rapid.examples.scenarios.geography.ParseRegionCategoriesScenario;
11+
import com.expediagroup.sdk.rapid.examples.scenarios.geography.ParseRegionCoordinatesScenario;
12+
import com.expediagroup.sdk.rapid.examples.scenarios.geography.ParseRegionDescendantsScenario;
13+
import com.expediagroup.sdk.rapid.examples.scenarios.geography.ParseRegionWithMultiPolygonCoordinatesScenario;
614
import org.slf4j.Logger;
715
import org.slf4j.LoggerFactory;
816

@@ -45,5 +53,86 @@ public static void main(String[] args) {
4553
multiRoomHoldAndResumeBookScenario.setProfile(new DefaultRapidPartnerProfile());
4654
multiRoomHoldAndResumeBookScenario.run();
4755

56+
/* Run Get List of Region Names Scenario using the default profile
57+
This scenario demonstrates the following:
58+
1. Getting all regions with details in a paginated manner
59+
2. Filtering region names
60+
*/
61+
logger.info("Running Get List of Region Names Scenario...");
62+
GetListOfRegionNamesScenario getListOfRegionNamesScenario = new GetListOfRegionNamesScenario();
63+
getListOfRegionNamesScenario.setProfile(new DefaultRapidPartnerProfile());
64+
getListOfRegionNamesScenario.run();
65+
66+
/* Run Get Region Name of Region Scenario using the default profile
67+
This scenario demonstrates the following:
68+
1. Getting region details by region id
69+
2. Accessing region details
70+
*/
71+
logger.info("Running Get Region Name of Region Scenario...");
72+
GetRegionDetailsAndPropertyIdsScenario getRegionNameOfRegionScenario = new GetRegionDetailsAndPropertyIdsScenario();
73+
getRegionNameOfRegionScenario.setProfile(new DefaultRapidPartnerProfile());
74+
getRegionNameOfRegionScenario.run();
75+
76+
/* Run Get Region By Ancestor Id Scenario using the default profile
77+
This scenario demonstrates the following:
78+
1. Getting paginated regions details by ancestor id
79+
2. Accessing region details
80+
*/
81+
logger.info("Running Get Region By Ancestor Id Scenario...");
82+
GetRegionByAncestorIdScenario getRegionByAncestorIdScenario = new GetRegionByAncestorIdScenario();
83+
getRegionByAncestorIdScenario.setProfile(new DefaultRapidPartnerProfile());
84+
getRegionByAncestorIdScenario.run();
85+
86+
/* Run Get Region With MultiPolygon Coordinates Scenario using the default profile
87+
This scenario demonstrates the following:
88+
1. Getting region details with multipolygon coordinates by region id
89+
2. Accessing region coordinates of type multipolygon
90+
3. Accessing every polygon list of coordinates.
91+
*/
92+
logger.info("Running Get Region With MultiPolygon Coordinates Scenario...");
93+
ParseRegionWithMultiPolygonCoordinatesScenario parseRegionWithMultiPolygonCoordinatesScenario = new ParseRegionWithMultiPolygonCoordinatesScenario();
94+
parseRegionWithMultiPolygonCoordinatesScenario.setProfile(new DefaultRapidPartnerProfile());
95+
parseRegionWithMultiPolygonCoordinatesScenario.run();
96+
97+
/* Run Parse Region Ancestors Scenario using the default profile
98+
This scenario demonstrates the following:
99+
1. Getting region details with ancestors by region id
100+
2. Parsing region ancestors
101+
*/
102+
logger.info("Running Parse Region Ancestors Scenario...");
103+
ParseRegionAncestorsScenario parseRegionAncestorsScenario = new ParseRegionAncestorsScenario();
104+
parseRegionAncestorsScenario.setProfile(new DefaultRapidPartnerProfile());
105+
parseRegionAncestorsScenario.run();
106+
107+
/* Run Parse Region Descendants Scenario using the default profile
108+
This scenario demonstrates the following:
109+
1. Getting region details with descendants by region id
110+
2. Parsing region descendants
111+
*/
112+
logger.info("Running Parse Region Descendants Scenario...");
113+
ParseRegionDescendantsScenario parseRegionDescendantsScenario = new ParseRegionDescendantsScenario();
114+
parseRegionDescendantsScenario.setProfile(new DefaultRapidPartnerProfile());
115+
parseRegionDescendantsScenario.run();
116+
117+
/* Run Parse Region Coordinates Scenario using the default profile
118+
This scenario demonstrates the following:
119+
1. Getting region details with coordinates by region id
120+
2. Parsing region coordinates
121+
*/
122+
logger.info("Running Parse Region Coordinates Scenario...");
123+
ParseRegionCoordinatesScenario parseRegionCoordinatesScenario = new ParseRegionCoordinatesScenario();
124+
parseRegionCoordinatesScenario.setProfile(new DefaultRapidPartnerProfile());
125+
parseRegionCoordinatesScenario.run();
126+
127+
/* Run Parse Region Categories Scenario using the default profile
128+
This scenario demonstrates the following:
129+
1. Getting region details with property ids by region id
130+
2. Parsing region categories
131+
*/
132+
logger.info("Running Parse Region Categories Scenario...");
133+
ParseRegionCategoriesScenario parseRegionCategoriesScenario = new ParseRegionCategoriesScenario();
134+
parseRegionCategoriesScenario.setProfile(new DefaultRapidPartnerProfile());
135+
parseRegionCategoriesScenario.run();
136+
48137
}
49138
}

examples/src/main/java/com/expediagroup/sdk/rapid/examples/scenarios/booking/MultiRoomHoldAndResumeBookScenario.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class MultiRoomHoldAndResumeBookScenario implements RapidScenario {
2222

2323
private static final Logger logger = LoggerFactory.getLogger(MultiRoomHoldAndResumeBookScenario.class);
2424
private RapidPartnerSalesProfile rapidPartnerSalesProfile;
25+
private ShopService shopService = new ShopService();
2526

2627
@Override
2728
public void setProfile(RapidPartnerSalesProfile rapidPartnerSalesProfile) {
@@ -38,8 +39,7 @@ public void run() {
3839
*/
3940
logger.info("Getting property availability for test property: [{}]", Constants.TEST_PROPERTY_ID);
4041
List<String> occupancy = Arrays.asList("2", "2");
41-
ShopService shopService = new ShopService();
42-
List<Property> propertyAvailabilityList = shopService.getMultipleRoomsPropertiesAvailability(this.rapidPartnerSalesProfile, occupancy).getData();
42+
List<Property> propertyAvailabilityList = shopService.getMultipleRoomsPropertiesAvailability(this.rapidPartnerSalesProfile, occupancy).getBody();
4343

4444
if (propertyAvailabilityList == null || propertyAvailabilityList.isEmpty()) {
4545
logger.error("No property availability found for the test property.");

examples/src/main/java/com/expediagroup/sdk/rapid/examples/scenarios/booking/SingleRoomBookScenario.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
public class SingleRoomBookScenario implements RapidScenario {
2020

2121
private static final Logger logger = LoggerFactory.getLogger(SingleRoomBookScenario.class);
22+
private ShopService shopService = new ShopService();
2223
private RapidPartnerSalesProfile rapidPartnerSalesProfile;
2324

2425
@Override
@@ -31,8 +32,8 @@ public void run() {
3132

3233
// Shopping for properties
3334
logger.info("Getting property availability for test property: {}", Constants.TEST_PROPERTY_ID);
34-
ShopService shopService = new ShopService();
35-
List<Property> propertyAvailabilityList = shopService.getSingleRoomPropertiesAvailability(this.rapidPartnerSalesProfile).getData();
35+
36+
List<Property> propertyAvailabilityList = shopService.getSingleRoomPropertiesAvailability(this.rapidPartnerSalesProfile).getBody();
3637

3738
if (propertyAvailabilityList == null || propertyAvailabilityList.isEmpty()) {
3839
logger.error("No property availability found for the test property.");
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.expediagroup.sdk.rapid.examples.scenarios.geography;
2+
3+
import com.expediagroup.sdk.rapid.examples.salesprofiles.RapidPartnerSalesProfile;
4+
import com.expediagroup.sdk.rapid.examples.scenarios.RapidScenario;
5+
import com.expediagroup.sdk.rapid.examples.services.GeographyService;
6+
import com.expediagroup.sdk.rapid.models.Region;
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
9+
10+
import java.util.List;
11+
12+
public class GetListOfRegionNamesScenario implements RapidScenario {
13+
14+
private static final Logger logger = LoggerFactory.getLogger(GetListOfRegionNamesScenario.class);
15+
private GeographyService geographyService = new GeographyService();
16+
private RapidPartnerSalesProfile rapidPartnerSalesProfile;
17+
18+
@Override
19+
public void setProfile(RapidPartnerSalesProfile rapidPartnerSalesProfile) {
20+
this.rapidPartnerSalesProfile = rapidPartnerSalesProfile;
21+
}
22+
23+
@Override
24+
public void run() {
25+
// Calling regions API with details
26+
logger.info("Calling GET /regions API to get list of regions...");
27+
List<List<Region>> regions = geographyService.getAllRegionsWithDetails(this.rapidPartnerSalesProfile);
28+
29+
// Filter regions names
30+
logger.info("Regions names:");
31+
regions.forEach(regionList -> {
32+
regionList.forEach(region -> {
33+
logger.info(region.getNameFull());
34+
});
35+
});
36+
}
37+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.expediagroup.sdk.rapid.examples.scenarios.geography;
2+
3+
import com.expediagroup.sdk.rapid.examples.Constants;
4+
import com.expediagroup.sdk.rapid.examples.salesprofiles.RapidPartnerSalesProfile;
5+
import com.expediagroup.sdk.rapid.examples.scenarios.RapidScenario;
6+
import com.expediagroup.sdk.rapid.examples.services.GeographyService;
7+
import com.expediagroup.sdk.rapid.models.Region;
8+
import org.slf4j.Logger;
9+
import org.slf4j.LoggerFactory;
10+
11+
import java.util.List;
12+
13+
public class GetRegionByAncestorIdScenario implements RapidScenario {
14+
15+
private static final Logger logger = LoggerFactory.getLogger(GetRegionByAncestorIdScenario.class);
16+
private GeographyService geographyService = new GeographyService();
17+
private RapidPartnerSalesProfile rapidPartnerSalesProfile;
18+
19+
@Override
20+
public void setProfile(RapidPartnerSalesProfile rapidPartnerSalesProfile) {
21+
this.rapidPartnerSalesProfile = rapidPartnerSalesProfile;
22+
}
23+
24+
@Override
25+
public void run() {
26+
// Calling region API with details and property ids by Ancestor ID
27+
logger.info("Calling GET /region API to get region details and property ids by ancestor id: [{}]...", Constants.TEST_ANCESTOR_ID);
28+
List<List<Region>> regionsPages = geographyService.getRegionsByAncestor(Constants.TEST_ANCESTOR_ID, this.rapidPartnerSalesProfile);
29+
30+
if (regionsPages == null || regionsPages.isEmpty()) {
31+
logger.error("No regions found for the ancestor id: [{}].", Constants.TEST_ANCESTOR_ID);
32+
return;
33+
}
34+
35+
logger.info("Regions found for the ancestor id: [{}]:", Constants.TEST_ANCESTOR_ID);
36+
regionsPages.forEach(page -> {
37+
page.forEach(region -> {
38+
logger.info("---------------------------------");
39+
logger.info("Region Full Name: {}", region.getNameFull());
40+
logger.info("Region Type: {}", region.getType());
41+
logger.info("Region Country Code: {}", region.getCountryCode());
42+
logger.info("---------------------------------");
43+
});
44+
});
45+
}
46+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.expediagroup.sdk.rapid.examples.scenarios.geography;
2+
3+
import com.expediagroup.sdk.rapid.examples.Constants;
4+
import com.expediagroup.sdk.rapid.examples.salesprofiles.RapidPartnerSalesProfile;
5+
import com.expediagroup.sdk.rapid.examples.scenarios.RapidScenario;
6+
import com.expediagroup.sdk.rapid.examples.services.GeographyService;
7+
import com.expediagroup.sdk.rapid.models.Region;
8+
import org.slf4j.Logger;
9+
import org.slf4j.LoggerFactory;
10+
11+
import java.util.stream.Collectors;
12+
13+
public class GetRegionDetailsAndPropertyIdsScenario implements RapidScenario {
14+
15+
private static final Logger logger = LoggerFactory.getLogger(GetRegionDetailsAndPropertyIdsScenario.class);
16+
private GeographyService geographyService = new GeographyService();
17+
private RapidPartnerSalesProfile rapidPartnerSalesProfile;
18+
19+
@Override
20+
public void setProfile(RapidPartnerSalesProfile rapidPartnerSalesProfile) {
21+
this.rapidPartnerSalesProfile = rapidPartnerSalesProfile;
22+
}
23+
24+
@Override
25+
public void run() {
26+
// Calling region API with details and property ids
27+
logger.info("Calling GET /region API to get region details and property ids by region id: [{}]...", Constants.TEST_REGION_ID);
28+
Region region = geographyService.getRegionDetailsAndPropertyIds(Constants.TEST_REGION_ID, "en-US", this.rapidPartnerSalesProfile);
29+
30+
logger.info("Region Full Name: {}", region.getNameFull());
31+
logger.info("Region Type: {}", region.getType());
32+
logger.info("Region Country Code: {}", region.getCountryCode());
33+
34+
String result = region.getPropertyIds().stream()
35+
.map(Object::toString)
36+
.collect(Collectors.joining(","));
37+
logger.info("Region Property IDs: [{}]", result);
38+
39+
}
40+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.expediagroup.sdk.rapid.examples.scenarios.geography;
2+
3+
import com.expediagroup.sdk.rapid.examples.Constants;
4+
import com.expediagroup.sdk.rapid.examples.salesprofiles.RapidPartnerSalesProfile;
5+
import com.expediagroup.sdk.rapid.examples.scenarios.RapidScenario;
6+
import com.expediagroup.sdk.rapid.examples.services.GeographyService;
7+
import com.expediagroup.sdk.rapid.models.Region;
8+
import org.slf4j.Logger;
9+
import org.slf4j.LoggerFactory;
10+
11+
public class ParseRegionAncestorsScenario implements RapidScenario {
12+
13+
private static final Logger logger = LoggerFactory.getLogger(ParseRegionAncestorsScenario.class);
14+
private GeographyService geographyService = new GeographyService();
15+
private RapidPartnerSalesProfile rapidPartnerSalesProfile;
16+
17+
@Override
18+
public void setProfile(RapidPartnerSalesProfile rapidPartnerSalesProfile) {
19+
this.rapidPartnerSalesProfile = rapidPartnerSalesProfile;
20+
}
21+
22+
@Override
23+
public void run() {
24+
// Calling region API with details and property ids
25+
logger.info("Calling GET /region API to get region details and property ids by region id: [{}]...", Constants.TEST_REGION_ID);
26+
Region region = geographyService.getRegionDetailsAndPropertyIds(Constants.TEST_REGION_ID, "en-US", this.rapidPartnerSalesProfile);
27+
28+
logger.info("Region Full Name: {}", region.getNameFull());
29+
logger.info("Region Type: {}", region.getType());
30+
logger.info("Region Country Code: {}", region.getCountryCode());
31+
32+
logger.info("Region Ancestors:");
33+
region.getAncestors().stream().forEach(ancestor -> {
34+
logger.info("Ancestor id: [{}], type: [{}]", ancestor.getId(), ancestor.getType());
35+
});
36+
37+
}
38+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.expediagroup.sdk.rapid.examples.scenarios.geography;
2+
3+
import com.expediagroup.sdk.rapid.examples.Constants;
4+
import com.expediagroup.sdk.rapid.examples.salesprofiles.RapidPartnerSalesProfile;
5+
import com.expediagroup.sdk.rapid.examples.scenarios.RapidScenario;
6+
import com.expediagroup.sdk.rapid.examples.services.GeographyService;
7+
import com.expediagroup.sdk.rapid.models.Region;
8+
import org.slf4j.Logger;
9+
import org.slf4j.LoggerFactory;
10+
11+
public class ParseRegionCategoriesScenario implements RapidScenario {
12+
13+
private static final Logger logger = LoggerFactory.getLogger(ParseRegionCategoriesScenario.class);
14+
private GeographyService geographyService = new GeographyService();
15+
private RapidPartnerSalesProfile rapidPartnerSalesProfile;
16+
17+
@Override
18+
public void setProfile(RapidPartnerSalesProfile rapidPartnerSalesProfile) {
19+
this.rapidPartnerSalesProfile = rapidPartnerSalesProfile;
20+
}
21+
22+
@Override
23+
public void run() {
24+
// Calling region API with details and property ids
25+
logger.info("Calling GET /region API to get region details and property ids by region id: [{}]...", Constants.TEST_REGION_ID);
26+
Region region = geographyService.getRegionDetailsAndPropertyIds(Constants.TEST_REGION_ID, "en-US", this.rapidPartnerSalesProfile);
27+
28+
logger.info("Region full name: {}", region.getNameFull());
29+
logger.info("Region type: {}", region.getType());
30+
logger.info("Region country code: {}", region.getCountryCode());
31+
32+
logger.info("Region categories:");
33+
region.getCategories().forEach(category -> {
34+
logger.info("Category key: [{}] value: [{}]", category.split(":")[0], category.split(":")[1]);
35+
});
36+
}
37+
}

0 commit comments

Comments
 (0)