Sie sind auf Seite 1von 3

public List<RecommendationBean> getCalculatedPrice(RequestFilters

requestFilters)
{
List<RecommendationBean>recommendationBeanArrayList= new ArrayList();
Pack basePack;
ArrayList<Pair> basePacks;
List<String>ChannelsReq;
TataSkyDao tataSkyDao =new TataSkyDao();
basePacks=getBasePack(requestFilters);
List<String> genreNameList=requestFilters.getGenres();
List<Pack> generesMapList = new ArrayList();

for(Pair basePackPair:basePacks) {
RecommendationBean recommendationBean= new RecommendationBean();
List <Pair> genreList= new ArrayList();
//Map.Entry pair = (Map.Entry) it.next();

ChannelsReq = requestFilters.getChannles();
//get base pack Map
basePack = tataSkyDao.getBasePackMap((String)basePackPair.getFirst());
recommendationBean.setBasePack(basePackPair);
Map<String, Integer> addOnPriceMap = tataSkyDao.getAddOnPriceMap();

//get Genre Map


for (String genreName : genreNameList) {
Pack genre = tataSkyDao.getGenreMap(genreName);
genre.setPrice(addOnPriceMap.get(genre.getName()));
Pair genrePair = new Pair();
genrePair.setFirst(genre.getName());
genrePair.setSecond(genre.getPrice());
genreList.add(genrePair);

generesMapList.add(genre);

}
recommendationBean.setGenreList(genreList);
//check channles covered in base pack
for (Channel channel : basePack.getChannles()) {
if (ChannelsReq.contains(channel.getPcChannel()))
ChannelsReq.remove(channel.getPcChannel());

}
// check channel covered in asked genre
for (Pack genrePack : generesMapList) {
for (Channel channel : genrePack.getChannles()) {
if (ChannelsReq.contains(channel.getPcChannel()))
ChannelsReq.remove(channel.getPcChannel());
}

Map<String, List<String>> addOnChannelMap =


tataSkyDao.getAddOnChannelMap();
Map<String, Integer> channelPriceMap = tataSkyDao.getChannelPriceMap();

Map<String, List<String>> addOnChannelRecomm = new HashMap();


for (String channel : ChannelsReq) {
if (addOnChannelMap.containsKey(channel))
for (String addOns : addOnChannelMap.get(channel)) {
if (addOnChannelRecomm.containsKey(addOns)) {
List<String> temp = addOnChannelRecomm.get(addOns);
temp.add(channel);
addOnChannelRecomm.put(addOns, temp);
} else {
List<String> temp = new ArrayList();
temp.add(channel);
addOnChannelRecomm.put(addOns, temp);
}
}

Iterator it1 = addOnChannelRecomm.entrySet().iterator();


while (it1.hasNext()) {
Map.Entry pair1 = (Map.Entry) it1.next();
int channelsPrice = 0;
for (String channelAddon : (List<String>) pair1.getValue()) {
if (channelPriceMap.containsKey(channelAddon))
channelsPrice = channelsPrice +
channelPriceMap.get(channelAddon);
}
if (channelsPrice < addOnPriceMap.get(pair1.getKey()))
it1.remove();
}

Iterator it2 = addOnChannelRecomm.entrySet().iterator();


while (it2.hasNext()) {
Map.Entry pair2 = (Map.Entry) it2.next();
AdditionalPlan plan = new AdditionalPlan();
plan.setAddOnPrice((Integer) addOnPriceMap.get(pair2.getKey()));
plan.setAddOnName((String) pair2.getKey());
Map<String, Integer> alCarte = new HashMap();
for (String channel : ChannelsReq) {
if (!((ArrayList<String>) pair2.getValue()).contains(channel))
{
alCarte.put(channel, channelPriceMap.get(channel));
}
}
plan.setChannles(alCarte);
recommendationBean.setPlan(plan);
recommendationBean= priceAdder(recommendationBean);
if(requestFilters.getQuality()==Constants.HD)
recommendationBean.setPrice(recommendationBean.getPrice()
+Constants.HD_COST);
recommendationBeanArrayList.add(recommendationBean);

}
if (addOnChannelRecomm.size() == 0) {
AdditionalPlan plan = new AdditionalPlan();
HashMap<String, Integer> alCarte = new HashMap();
for (String channel : ChannelsReq) {

alCarte.put(channel, channelPriceMap.get(channel));
}
plan.setChannles(alCarte);
recommendationBean.setPlan(plan);
recommendationBean= priceAdder(recommendationBean);
if(requestFilters.getQuality()==Constants.HD)
recommendationBean.setPrice(recommendationBean.getPrice()
+Constants.HD_COST);

recommendationBeanArrayList.add(recommendationBean);

return recommendationBeanArrayList;
}

Das könnte Ihnen auch gefallen