final Set<iOSVariant> iOSVariants = new HashSet<iOSVariant>();
final Set<AndroidVariant> androidVariants = new HashSet<AndroidVariant>();
final Set<SimplePushVariant> simplePushVariants = new HashSet<SimplePushVariant>();
final Set<ChromePackagedAppVariant> chromePackagedAppVariants = new HashSet<ChromePackagedAppVariant>();
final SendCriteria criteria = message.getSendCriteria();
final List<String> variantIDs = criteria.getVariants();
// if the criteria payload did specify the "variants" field,
// we look up each of those mentioned variants, by their "variantID":
if (variantIDs != null) {
for (String variantID : variantIDs) {
Variant variant = genericVariantService.findByVariantID(variantID);
// does the variant exist ?
if (variant != null) {
// based on type, we store in the matching collection
switch (variant.getType()) {
case ANDROID:
androidVariants.add((AndroidVariant) variant);
break;
case IOS:
iOSVariants.add((iOSVariant) variant);
break;
case SIMPLE_PUSH:
simplePushVariants.add((SimplePushVariant) variant);
break;
case CHROME_PACKAGED_APP:
chromePackagedAppVariants.add((ChromePackagedAppVariant) variant);
default:
// nope; should never enter here
break;
}
}
}
} else {
// No specific variants have been requested,
// we get all the variants, from the given PushApplication:
androidVariants.addAll(pushApplication.getAndroidVariants());
iOSVariants.addAll(pushApplication.getIOSVariants());
simplePushVariants.addAll(pushApplication.getSimplePushVariants());
chromePackagedAppVariants.addAll(pushApplication.getChromePackagedAppVariants());
}
// all possible criteria
final List<String> categories = criteria.getCategories();
final List<String> aliases = criteria.getAliases();
final List<String> deviceTypes = criteria.getDeviceTypes();
// let's check if we actually have data for native platforms!
if (message.getData() != null) {
// TODO: DISPATCH TO A QUEUE .....