Skip to content

Commit 1e6dd23

Browse files
committed
[smarcet] - #14574
* tweaks on room filters ** added external locations ** addeds rooms without floors ** filtered rooms without events
1 parent 4f8a357 commit 1e6dd23

30 files changed

+548
-310
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.openstack.android.summit.common.DTOs.Assembler.Converters;
2+
3+
import android.util.Log;
4+
5+
import com.crashlytics.android.Crashlytics;
6+
7+
import org.modelmapper.AbstractConverter;
8+
import org.openstack.android.summit.common.Constants;
9+
import org.openstack.android.summit.common.DTOs.VenueFilterDTO;
10+
import org.openstack.android.summit.common.entities.Venue;
11+
12+
public class AbstractVenue2VenueFilterDTO<S extends Venue> extends AbstractConverter<S, VenueFilterDTO> {
13+
14+
@Override
15+
protected VenueFilterDTO convert(S source) {
16+
VenueFilterDTO venueDTO = new VenueFilterDTO();
17+
try {
18+
venueDTO.setId(source.getId());
19+
venueDTO.setName(source.getName());
20+
venueDTO.setHasRooms(source.hasRooms());
21+
} catch (Exception e) {
22+
Crashlytics.logException(e);
23+
Log.e(Constants.LOG_TAG, e.getMessage(), e);
24+
throw e;
25+
}
26+
return venueDTO;
27+
}
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.openstack.android.summit.common.DTOs.Assembler.Converters;
2+
3+
import org.openstack.android.summit.common.entities.Venue;
4+
5+
public class Venue2VenueFilterDTO extends AbstractVenue2VenueFilterDTO<Venue> {
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.openstack.android.summit.common.DTOs.Assembler.Converters;
2+
3+
import io.realm.VenueRealmProxy;
4+
5+
public class VenueRealmProxy2VenueFilterDTO extends AbstractVenue2VenueFilterDTO<VenueRealmProxy> {
6+
}

app/src/main/java/org/openstack/android/summit/common/DTOs/Assembler/DTOAssembler.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
import org.openstack.android.summit.common.DTOs.Assembler.Converters.SummitEventRealmProxy2EventDetailDTO;
2020
import org.openstack.android.summit.common.DTOs.Assembler.Converters.SummitEventRealmProxy2ScheduleItemDTO;
2121
import org.openstack.android.summit.common.DTOs.Assembler.Converters.Venue2VenueDTO;
22+
import org.openstack.android.summit.common.DTOs.Assembler.Converters.Venue2VenueFilterDTO;
2223
import org.openstack.android.summit.common.DTOs.Assembler.Converters.VenueFloorRealmProxy2VenueFloorDTO;
2324
import org.openstack.android.summit.common.DTOs.Assembler.Converters.VenueRealmProxy2VenueDTO;
25+
import org.openstack.android.summit.common.DTOs.Assembler.Converters.VenueRealmProxy2VenueFilterDTO;
2426
import org.openstack.android.summit.common.DTOs.Assembler.Converters.VenueRoomRealmProxy2VenueRoomDTO;
2527
import org.openstack.android.summit.common.DTOs.Assembler.Converters.PushNotification2PushNotificationDetailDTO;
2628
import org.openstack.android.summit.common.DTOs.Assembler.Converters.WifiConnection2WifiListItemDTO;
@@ -58,6 +60,8 @@ public DTOAssembler() {
5860
modelMapper.addConverter(new PushNotification2PushNotificationDetailDTO());
5961
modelMapper.addConverter(new PushNotificationRealmProxy2PushNotificationDetailDTO());
6062
modelMapper.addConverter(new WifiConnection2WifiListItemDTO());
63+
modelMapper.addConverter(new Venue2VenueFilterDTO());
64+
modelMapper.addConverter(new VenueRealmProxy2VenueFilterDTO());
6165
}
6266

6367
@Override
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.openstack.android.summit.common.DTOs;
2+
3+
public class VenueFilterDTO extends NamedDTO {
4+
5+
private boolean hasRooms;
6+
7+
public boolean isHasRooms() {
8+
return hasRooms;
9+
}
10+
11+
public void setHasRooms(boolean hasRooms) {
12+
this.hasRooms = hasRooms;
13+
}
14+
}

app/src/main/java/org/openstack/android/summit/common/business_logic/IScheduleInteractor.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,19 @@
22

33
import org.joda.time.DateTime;
44
import org.openstack.android.summit.common.DTOs.ScheduleItemDTO;
5-
import org.openstack.android.summit.common.DTOs.SummitDTO;
5+
import org.openstack.android.summit.common.filters.FilterConditions;
6+
67
import java.util.List;
78

89
/**
910
* Created by Claudio Redi on 11/18/2015.
1011
*/
11-
public interface IScheduleInteractor extends IScheduleableInteractor {
12+
public interface IScheduleInteractor
13+
extends IScheduleableInteractor {
1214

13-
List<ScheduleItemDTO> getScheduleEvents(DateTime startDate, DateTime endDate, List<Integer> eventTypes, List<Integer> summitTypes, List<Integer> trackGroups, List<Integer> tracks, List<String> tags, List<String> levels, List<Integer> venues, boolean showVideoTalks);
15+
List<ScheduleItemDTO> getScheduleEvents(FilterConditions conditions);
1416

15-
List<DateTime> getDatesWithoutEvents(DateTime startDate, DateTime endDate, List<Integer> eventTypes, List<Integer> summitTypes, List<Integer> trackGroups, List<Integer> tracks, List<String> tags, List<String> levels, List<Integer> venues, boolean showVideoTalks);
17+
List<DateTime> getDatesWithoutEvents(FilterConditions conditions);
1618

1719
boolean eventExist(int id);
1820

app/src/main/java/org/openstack/android/summit/common/business_logic/ScheduleInteractor.java

Lines changed: 15 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import org.openstack.android.summit.common.data_access.repositories.ISummitDataStore;
1010
import org.openstack.android.summit.common.data_access.repositories.ISummitEventDataStore;
1111
import org.openstack.android.summit.common.entities.SummitEvent;
12+
import org.openstack.android.summit.common.filters.DateRangeCondition;
13+
import org.openstack.android.summit.common.filters.FilterConditions;
1214
import org.openstack.android.summit.common.network.IReachability;
1315
import org.openstack.android.summit.common.push_notifications.IPushNotificationsManager;
1416
import org.openstack.android.summit.common.security.ISecurityManager;
@@ -57,31 +59,13 @@ public class ScheduleInteractor extends ScheduleableInteractor implements ISched
5759
@Override
5860
public List<ScheduleItemDTO> getScheduleEvents
5961
(
60-
DateTime startDate,
61-
DateTime endDate,
62-
List<Integer> eventTypes,
63-
List<Integer> summitTypes,
64-
List<Integer> trackGroups,
65-
List<Integer> tracks,
66-
List<String> tags,
67-
List<String> levels,
68-
List<Integer> rooms,
69-
boolean showVideoTalks
62+
FilterConditions conditions
7063
)
7164
{
7265
return postProcessScheduleEventList(createDTOList(
7366
summitEventDataStore.getByFilter
7467
(
75-
startDate,
76-
endDate,
77-
eventTypes,
78-
summitTypes,
79-
trackGroups,
80-
tracks,
81-
tags,
82-
levels,
83-
rooms,
84-
showVideoTalks
68+
conditions
8569
),
8670
ScheduleItemDTO.class
8771
));
@@ -90,32 +74,21 @@ public class ScheduleInteractor extends ScheduleableInteractor implements ISched
9074
@Override
9175
public List<DateTime> getDatesWithoutEvents
9276
(
93-
DateTime startDate,
94-
DateTime endDate,
95-
List<Integer> eventTypes,
96-
List<Integer> summitTypes,
97-
List<Integer> trackGroups,
98-
List<Integer> tracks,
99-
List<String> tags,
100-
List<String> levels,
101-
List<Integer> rooms,
102-
boolean showVideoTalks
77+
FilterConditions conditions
10378
) {
10479
ArrayList<DateTime> inactiveDates = new ArrayList<>();
10580
List<SummitEvent> events;
106-
81+
DateTime startDate = conditions.getStartDate();
82+
DateTime endDate = conditions.getEndDate();
10783
while (startDate.isBefore(endDate)) {
108-
events = summitEventDataStore.getByFilter(
109-
startDate.withTime(0, 0, 0, 0),
110-
startDate.withTime(23, 59, 59, 999),
111-
eventTypes,
112-
summitTypes,
113-
trackGroups,
114-
tracks,
115-
tags,
116-
levels,
117-
rooms,
118-
showVideoTalks);
84+
events = summitEventDataStore.getByFilter
85+
(
86+
new DateRangeCondition(
87+
startDate.withTime(0, 0, 0, 0),
88+
startDate.withTime(23, 59, 59, 999)
89+
),
90+
conditions
91+
);
11992
if (events.size() == 0) {
12093
inactiveDates.add(startDate);
12194
}

app/src/main/java/org/openstack/android/summit/common/data_access/deserialization/VenueDeserializer.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.openstack.android.summit.common.entities.Image;
99
import org.openstack.android.summit.common.entities.Venue;
1010
import org.openstack.android.summit.common.entities.VenueFloor;
11+
import org.openstack.android.summit.common.entities.VenueRoom;
1112
import org.openstack.android.summit.common.utils.RealmFactory;
1213

1314
import javax.inject.Inject;
@@ -18,11 +19,19 @@
1819
public class VenueDeserializer extends BaseDeserializer implements IVenueDeserializer {
1920
IGenericDeserializer genericDeserializer;
2021
IVenueFloorDeserializer venueFloorDeserializer;
22+
IVenueRoomDeserializer venueRoomDeserializer;
2123

2224
@Inject
23-
public VenueDeserializer(IGenericDeserializer genericDeserializer, IVenueFloorDeserializer venueFloorDeserializer){
25+
public VenueDeserializer
26+
(
27+
IGenericDeserializer genericDeserializer,
28+
IVenueFloorDeserializer venueFloorDeserializer,
29+
IVenueRoomDeserializer venueRoomDeserializer
30+
)
31+
{
2432
this.genericDeserializer = genericDeserializer;
2533
this.venueFloorDeserializer = venueFloorDeserializer;
34+
this.venueRoomDeserializer = venueRoomDeserializer;
2635
}
2736

2837
@Override
@@ -99,6 +108,22 @@ public Venue deserialize(String jsonString) throws JSONException {
99108
}
100109
}
101110

111+
if(jsonObject.has("rooms")) {
112+
VenueRoom room;
113+
JSONObject jsonObjectRoom;
114+
JSONArray jsonArrayRooms = jsonObject.getJSONArray("rooms");
115+
venue.getRooms().clear();
116+
for (int i = 0; i < jsonArrayRooms.length(); i++) {
117+
jsonObjectRoom = jsonArrayRooms.getJSONObject(i);
118+
if(!jsonObjectRoom.has("floor_id")) continue;
119+
int floorId = jsonObjectRoom.getInt("floor_id");
120+
if(floorId != 0) continue;
121+
room = venueRoomDeserializer.deserialize(jsonObjectRoom.toString());
122+
venue.getRooms().add(room);
123+
room.setVenue(venue);
124+
}
125+
}
126+
102127
return venue;
103128
}
104129
}

app/src/main/java/org/openstack/android/summit/common/data_access/repositories/ISummitEventDataStore.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import org.joda.time.DateTime;
44
import org.openstack.android.summit.common.entities.Feedback;
55
import org.openstack.android.summit.common.entities.SummitEvent;
6+
import org.openstack.android.summit.common.filters.DateRangeCondition;
7+
import org.openstack.android.summit.common.filters.FilterConditions;
8+
69
import java.util.List;
710

811
import io.reactivex.Observable;
@@ -12,7 +15,9 @@
1215
*/
1316
public interface ISummitEventDataStore extends IGenericDataStore<SummitEvent> {
1417

15-
List<SummitEvent> getByFilter(DateTime startDate, DateTime endDate, List<Integer> eventTypes, List<Integer> summitTypes, List<Integer> trackGroups, List<Integer> tracks, List<String> tags, List<String> levels, List<Integer> venues, boolean showVideoTalks);
18+
List<SummitEvent> getByFilter(FilterConditions conditions);
19+
20+
List<SummitEvent> getByFilter(DateRangeCondition dateRangeCondition, FilterConditions conditions);
1621

1722
List<String> getPresentationLevels();
1823

@@ -33,4 +38,8 @@ public interface ISummitEventDataStore extends IGenericDataStore<SummitEvent> {
3338
long countBySummitType(int sumitTypeId);
3439

3540
long countByLevel(String level);
41+
42+
boolean existEventsOnRoom(int roomId);
43+
44+
boolean existEventsOnVenue(int venueId);
3645
}

0 commit comments

Comments
 (0)