package com.malcom.library.android.module.campaign; import android.util.Log; import com.malcom.library.android.MCMDefines; import java.util.ArrayList; import java.util.Iterator; import java.util.Random; /** * Created with IntelliJ IDEA. * User: PedroDuran * Date: 09/05/13 * Time: 15:45 * To change this template use File | Settings | File Templates. */ public class MCMCampaignsUtils { /** * Method that filter the promotion campaign items from arrayList * * @param campaignsArray the arrayList with all the MCMCampaignDTO retrieved from server * @return ArrayList<MCMCampaignDTO> with promotion campaign items */ public static ArrayList<MCMCampaignDTO> getFilteredCampaigns(ArrayList<MCMCampaignDTO> campaignsArray, MCMCampaignDTO.CampaignType type) { Iterator iterator = campaignsArray.iterator(); ArrayList<MCMCampaignDTO> resultArray = new ArrayList<MCMCampaignDTO>(); while (iterator.hasNext()) { MCMCampaignDTO currentCampaign = (MCMCampaignDTO) iterator.next(); if (currentCampaign.getType() == type) { resultArray.add(currentCampaign); } } return resultArray; } /** * Method that gets randomly weighted a campaign to serve. * * @return MCMCampaignDTO campaign selected. * @since 1.0.1 */ public static MCMCampaignDTO getCampaignPerWeight(ArrayList<MCMCampaignDTO> campaignsArray) { ArrayList<Integer> weightedArray = new ArrayList<Integer>(); //generates the array to random weighted selection for (int i = 0; i < campaignsArray.size(); i++) { MCMCampaignDTO campaignModel = campaignsArray.get(i); //adds to the weighted array as ids as weight has for (int j = 0; j < campaignModel.getWeight(); j++) { weightedArray.add(i); } } //generates random number int selection = 0; if (weightedArray.size() > 1) { selection = new Random().nextInt(weightedArray.size() - 1); } //gets the random position and gets the id written on it. It will be one of the campaigns MCMCampaignDTO selectedCampaignModel = campaignsArray.get(weightedArray.get(selection)); return selectedCampaignModel; } }