package org.karmaexchange.resources.msg;
import static org.karmaexchange.util.OfyService.ofy;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlRootElement;
import org.karmaexchange.dao.KeyWrapper;
import org.karmaexchange.dao.AggregateRating;
import org.karmaexchange.dao.User;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.googlecode.objectify.Key;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
@XmlRootElement
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper=true)
@ToString(callSuper=true)
public class EventParticipantView extends UserSummaryInfoView {
private AggregateRating eventOrganizerRating;
public static List<EventParticipantView> get(List<KeyWrapper<User>> usersBatch) {
List<EventParticipantView> registeredUsers = Lists.newArrayListWithCapacity(usersBatch.size());
if (!usersBatch.isEmpty()) {
List<Key<User>> registeredUserKeys = KeyWrapper.toKeys(usersBatch);
for (User user : ofy().load().keys(registeredUserKeys).values()) {
if (user != null) {
registeredUsers.add(EventParticipantView.create(user));
}
}
}
return registeredUsers;
}
public static Map<Key<User>, EventParticipantView> getMap(Collection<Key<User>> usersBatch) {
Map<Key<User>, EventParticipantView> result = Maps.newHashMap();
if (!usersBatch.isEmpty()) {
for (User user : ofy().load().keys(usersBatch).values()) {
if (user != null) {
result.put(Key.create(user), EventParticipantView.create(user));
}
}
}
return result;
}
public static EventParticipantView create(User user) {
return new EventParticipantView(user);
}
public EventParticipantView(User user) {
super(user);
eventOrganizerRating = user.getEventOrganizerRating();
}
}