controllers.EventController.java Source code

Java tutorial

Introduction

Here is the source code for controllers.EventController.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package controllers;

import data.entity.BaseParam;
import data.entity.Car;
import data.entity.CarCompletionOption;
import data.entity.CarOptionValue;
import data.entity.Event;
import data.entity.Feature;
import data.entity.FreeOption;
import data.entity.FreeValueRange;
import data.entity.Mark;
import data.entity.ProfileParam;
import data.entity.PropertyName;
import data.entity.Scene;
import data.entity.Sequence;
import data.entity.SequenceValueRange;
import data.entity.ValueRange;
import data.services.BaseParamService;
import data.services.CarService;
import data.services.EventService;
import data.services.FeatureService;
import data.services.FreeValueRangeService;
import data.services.MarkService;
import data.services.ProfileParamService;
import data.services.SceneService;
import data.services.SequenceService;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import logic.AStrategy1;
import logic.AStrategy2;
import logic.BStrategy1;
import logic.BStrategy2;
import logic.EntityCar;
import logic.EntityProperty;
import logic.IdealEntity;
import logic.IdealEntityParam;
import logic.IdealParametrClass;
import logic.ParamType;
import logic.Perception;
import logic.PropertyType;
import logic.Radical;
import logic.Rank;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import support.StringAdapter;

/**
 *
 * @author bezdatiuzer
 */
@Controller
@RequestMapping("/Event")
public class EventController {

    @Autowired
    private EventService eventService;
    @Autowired
    private SceneService sceneService;
    @Autowired
    private SequenceService sequenceService;
    @Autowired
    private ProfileParamService profileParamService;
    @Autowired
    private BaseParamService baseParamService;
    @Autowired
    private CarService carService;
    @Autowired
    private FreeValueRangeService freeValueRangeService;
    @Autowired
    private MarkService markService;
    @Autowired
    private FeatureService featureService;

    @ModelAttribute
    public void setInfo(Map<String, Object> model) {
        model.put("scenes", sceneService.getScenes());
        model.put("perceptions", Perception.values());
    }

    private List<String> IdealEntityLog = new ArrayList();
    /*@Autowired
     private ParseController parseController;*/

    @RequestMapping("/show")
    public String show(Map<String, Object> model) throws Exception {
        List<Event> evList = eventService.getEvents();
        model.put("eList", evList);
        model.put("event", new Event());
        return "EventShow";
    }

    @RequestMapping("/add")
    public String add(Map<String, Object> model, @ModelAttribute("event") Event event,
            @RequestParam("sceneId") Long sceneId, BindingResult result, HttpServletRequest request,
            RedirectAttributes ras) throws Exception {
        event.setAddDate(new Date());
        List<String> errors = new ArrayList();
        Scene sc = sceneService.find(sceneId);
        if (sc != null) {
            Sequence seq = sequenceService.getSequenceFromSceneAndRadx(sc, event.getRadical());
            event.setScene(sc);
            event.setStrategyA1(seq.getAStrat1());
            event.setStrategyB1(seq.getBStrat1());
            event.setResourceType(seq.getResourceType());
            event.setParamTox1(seq.getParamTox1());
            event.setValueTox1(seq.getValueTox1());
            event.setResourceProf(seq.getResourceProf());
            event.setStrategyA2(seq.getAStrat2());
            event.setStrategyB2(seq.getBStrat2());
            event.setParamTox2(seq.getParamTox2());
            event.setValueTox2(seq.getValueTox2());
            event.setAuthor(request.getRemoteUser());
            eventService.createEvent(event);
            errors.addAll(eventService.getResult().getErrors());
        } else {
            errors.add("?  ?");
        }
        ras.addFlashAttribute("error", errors);
        if (errors.isEmpty()) {
            return "redirect:/Event/showOne?eventId=" + event.getEventId();
        }
        return "redirect:/Event/show";
    }

    @RequestMapping("/deleteParam")
    public String deleteParam(Map<String, Object> model, @RequestParam("paramId") Long paramId,
            @RequestParam("eventId") Long eventId, RedirectAttributes ras) throws Exception {
        freeValueRangeService.delete(paramId);
        ras.addAttribute("eventId", eventId);
        return "redirect:/Event/showOne";

    }

    @RequestMapping("/addParam")
    public String addParam(Map<String, Object> model, @RequestParam("eventId") Long eventId,
            @RequestParam("uid") String uid, @RequestParam("vmin") Long vmin, @RequestParam("vmax") Long vmax,
            @RequestParam("amin") Long amin, @RequestParam("amax") Long amax, RedirectAttributes ras)
            throws Exception {
        List<BaseParam> bpList = baseParamService.getParams();
        BaseParam bp = baseParamService.getBaseParam(bpList, uid);
        FreeValueRange fvr = new FreeValueRange();
        fvr.setEvent(eventService.find(eventId));
        fvr.setUid(uid);
        fvr.setName(bp.getName());
        fvr.setValueMin(vmin);
        fvr.setValueMax(vmax);
        fvr.setAmin(amin);
        fvr.setAmax(amax);
        freeValueRangeService.create(fvr);

        ras.addAttribute("eventId", eventId);
        //ras.addFlashAttribute("baseParamsList", bpList);
        return "redirect:/Event/showOne";
    }

    @RequestMapping("/addMarks")
    public String addMarks(Map<String, Object> model, @RequestParam("eventId") Long eventId,
            @RequestParam(value = "marks", required = false) Long[] marks, RedirectAttributes ras)
            throws Exception {

        List<Mark> mList = new ArrayList();
        if (marks != null) {
            for (Long markId : marks) {
                mList.add(markService.getMark(markId));
            }
        }
        eventService.updateMarksInEvent(mList, eventId);

        ras.addAttribute("eventId", eventId);
        //ras.addFlashAttribute("baseParamsList", bpList);
        return "redirect:/Event/showOne";
    }

    @RequestMapping("/showOne")
    public String showOne(Map<String, Object> model, @RequestParam("eventId") Long eventId,
            @RequestParam(value = "type", required = false) String type,
            @RequestParam(value = "order", required = false) String order) throws Exception {
        Event ev = eventService.find(eventId);
        String myLog = "log:";
        if (ev != null) {
            IdealEntityLog = new ArrayList();
            ev.setLog("");
            String cutLog = "";
            //ev.setLog(new ArrayList());
            Sequence seq = sequenceService.getSequenceFromSceneAndRadx(ev.getScene(), ev.getRadical());
            //model.put("error", sequenceService.getResult().getErrors());
            model.put("event", ev);
            model.put("sequence", seq);
            model.put("markstring", eventService.getMarksInEventAsString(eventId));
            List<ValueRange> vrList = ev.getScene().getValueRanges();
            Collections.sort(vrList, SceneService.vrComparator);
            Radical rd = Radical.getFromString(ev.getRadical().substring(0, 1));
            List<ProfileParam> prpList = profileParamService.getParams(rd);
            //IdealEntityLog.add(ev.getRadical().substring(0, 1));
            //IdealEntityLog.add(prpList.size() + " - sizePP");
            List<BaseParam> bpList = baseParamService.getParams();
            //            IdealEntity ie = createIdealEntity(seq, ev, vrList, prpList, bpList, ev.getStrategyA1(), ev.getStrategyB1(), ev.getStrategyA2(), ev.getStrategyB2());
            IdealEntity ie = createIdealEntity(seq, ev, vrList, prpList, bpList, seq.getAStrat1(), seq.getBStrat1(),
                    seq.getAStrat2(), seq.getBStrat2());
            ArrayList<String> fullAList = ie.getAUidList();
            ArrayList<String> fullBList = ie.getBUidList();

            ArrayList<IdealEntityParam> showList = new ArrayList();
            for (IdealEntityParam iep : ie.getParamsArad()) {
                showList.add(iep);
            }
            for (IdealEntityParam iep : ie.getParamsAnorad()) {
                showList.add(iep);
            }
            for (IdealEntityParam iep : ie.getParamsBrad()) {
                showList.add(iep);
            }

            for (IdealEntityParam iep : ie.getParamsBnorad()) {
                showList.add(iep);
            }
            Collections.sort(showList, iepComparator);
            if (StringAdapter.getString(type).equals("ideal")) {

                List<Sequence> seqList = sequenceService.getSequences();
                model.put("seqList", seqList);
                model.put("iepList", showList);
                model.put("IdealEnt", ie);
                model.put("ieLog", IdealEntityLog);

            } else if (StringAdapter.getString(type).equals("count")) {

                List<Car> carList = carService.getCarsWithBrandsLesserPrice(ev.getMarks(), ev.getMoney());
                List<EntityCar> crList = new ArrayList();
                List<EntityCar> cutCarList = new ArrayList();

                int cutCount = 0;

                int carnum = 0;
                for (Car car : carList) {

                    /*carnum++;
                     if (carnum > 1500) {
                     break;
                     }*/
                    /*EntityCar ec = new EntityCar(bpList,baseParamService.getStaticParams(), ev.getRadical(), ev.getColor(), car, car.getModel().getMark().getTitle(), car.getModel().getTitle(), car.getTitle(), BigDecimal.valueOf(car.getCmPrice()), ie, ev.getMoney().add((ev.getMoney().multiply(BigDecimal.valueOf(seq.getAllowance()))).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP)),
                     ev.getStrategyA1(), ev.getStrategyA2(), ev.getStrategyB1(), ev.getStrategyB2(), ev.getParamTox1(), ev.getParamTox2(), ev.getValueTox1(), ev.getValueTox2(), ev.getResourceProf(), ev.getResourceType(), ev.getPerception());
                     */
                    EntityCar ec = new EntityCar(bpList, baseParamService.getStaticParams(), ev.getRadical(),
                            ev.getColor(), car, car.getModel().getMark().getTitle(), car.getModel().getTitle(),
                            car.getTitle(), BigDecimal.valueOf(car.getCmPrice()), ie,
                            ev.getMoney()
                                    .add((ev.getMoney().multiply(BigDecimal.valueOf(seq.getAllowance())))
                                            .divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP)),
                            seq.getAStrat1(), seq.getAStrat2(), seq.getBStrat1(), seq.getBStrat2(),
                            seq.getParamTox1(), seq.getParamTox2(), seq.getValueTox1(), seq.getValueTox2(),
                            seq.getResourceProf(), seq.getResourceType(), ev.getPerception());
                    List<CarOptionValue> covs = car.getCarOptionValues();
                    //ev.addToLog("covs1:"+covs.size());
                    List<FreeOption> foList = car.getFreeOptions();
                    for (FreeOption fo : foList) {
                        BaseParam bp = getBaseParam(bpList, fo.getUid().trim());
                        ParamType bppt = null;
                        if (bp != null) {

                            bppt = bp.getParamType();
                            Rank rank = null;
                            if (fullAList.contains(bp.getUid().trim())) {
                                //myLog+=" pnA:"+bp.getUid()+"; ";
                                rank = Rank.A;
                            } else if (fullBList.contains(bp.getUid().trim())) {
                                //myLog+=" pnB:"+bp.getUid()+"; ";
                                rank = Rank.B;
                            }
                            if (rank != null) {
                                //p++;
                                if (ParamType.DESCRETE.equals(bppt)) {
                                    BigDecimal modalVal = BigDecimal.valueOf(0);
                                    /*if(Perception.AUDIAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(fo.getAudial());
                                     }else if(Perception.KINESTETIC.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(fo.getKinestetic());
                                     }else if(Perception.VISUAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(fo.getVisual());
                                     }*/
                                    EntityProperty ep = createEntity(bp.getName(), fo.getTitle(),
                                            fo.getUid().trim(), fo.getParamValue(), fo.getRadical(), fo.getPrice(),
                                            fo.getType(), modalVal);
                                    ec.addProp(ep, rank);
                                } else if (ParamType.PERCENTE.equals(bppt)) {
                                    BigDecimal modalVal = BigDecimal.valueOf(0);
                                    /*if(Perception.AUDIAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(fo.getAudial());
                                     }else if(Perception.KINESTETIC.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(fo.getKinestetic());
                                     }else if(Perception.VISUAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(fo.getVisual());
                                     }*/
                                    EntityProperty ep = createEntity(bp.getName(), fo.getTitle(),
                                            fo.getUid().trim(), fo.getPercentValue(), fo.getRadical(),
                                            fo.getPrice(), fo.getType(), modalVal);
                                    ec.addProp(ep, rank);
                                }
                            }
                        }

                    }

                    int c = 0;

                    List<PropertyName> pns = car.getPropertyNames();
                    //myLog+=ec.getMarkTitle()+"-"+ec.getModelTitle()+"-"+ec.getCarTitle()+"; ";
                    //ev.addToLog("?  ? ?: "+pns.size());
                    int p = 0;
                    int p1 = 0;
                    for (PropertyName pn : pns) {
                        BaseParam bp = getBaseParam(bpList, pn.getCarProperty().getUid().trim());

                        ParamType bppt = null;
                        if (bp != null) {

                            bppt = bp.getParamType();
                            Rank rank = null;
                            if (fullAList.contains(bp.getUid().trim())) {
                                //myLog+=" pnA:"+bp.getUid()+"; ";
                                rank = Rank.A;
                            } else if (fullBList.contains(bp.getUid().trim())) {
                                //myLog+=" pnB:"+bp.getUid()+"; ";
                                rank = Rank.B;
                            }
                            if (rank != null) {
                                p++;
                                if (ParamType.DESCRETE.equals(bppt)) {
                                    BigDecimal modalVal = BigDecimal.valueOf(0);
                                    /*if(Perception.AUDIAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(pn.getAudial());
                                     }else if(Perception.KINESTETIC.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(pn.getKinestet());
                                     }else if(Perception.VISUAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(pn.getVisual());
                                     }*/
                                    EntityProperty ep = createEntity(bp.getName(), pn.getPropertyNameValue(),
                                            pn.getCarProperty().getUid().trim(), pn.getParamValue(),
                                            pn.getCarProperty().getRadical(), 0.0, PropertyType.PROPERTY, modalVal);
                                    ec.addProp(ep, rank);
                                    /*if(ep.getUid().equals("0201002")){
                                     myLog+=" disk:"+ep.getUid()+"-"+ep.getValue()+"; ";
                                     }*/
                                } else if (ParamType.PERCENTE.equals(bppt)) {
                                    BigDecimal modalVal = BigDecimal.valueOf(0);
                                    /*if(Perception.AUDIAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(pn.getAudial());
                                     }else if(Perception.KINESTETIC.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(pn.getKinestet());
                                     }else if(Perception.VISUAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(pn.getVisual());
                                     }*/
                                    EntityProperty ep = createEntity(bp.getName(), pn.getPropertyNameValue(),
                                            pn.getCarProperty().getUid().trim(), pn.getPercentValue(),
                                            pn.getCarProperty().getRadical(), 0.0, PropertyType.PROPERTY, modalVal);
                                    ec.addProp(ep, rank);
                                    /*if(ep.getUid().equals("0201002")){
                                     myLog+=" perc:"+ep.getUid()+"-"+ep.getValue()+"; ";
                                     }*/
                                }
                            }
                        } else {
                            p1++;
                        }

                    }

                    String covPrices = "";
                    for (CarOptionValue cov : covs) {
                        CarCompletionOption cco = cov.getCCO();
                        BaseParam bp = getBaseParam(bpList, cco.getUid().trim());
                        ParamType bppt = null;
                        if (bp != null) {
                            bppt = bp.getParamType();
                            Rank rank = null;
                            if (fullAList.contains(bp.getUid().trim())) {
                                rank = Rank.A;
                            } else if (fullBList.contains(bp.getUid().trim())) {
                                rank = Rank.B;
                            }
                            if (rank != null) {
                                if (ParamType.DESCRETE.equals(bppt)) {
                                    BigDecimal modalVal = BigDecimal.valueOf(0);
                                    /*if(Perception.AUDIAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(cov.getAudial());
                                     }else if(Perception.KINESTETIC.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(cov.getKinestet());
                                     }else if(Perception.VISUAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(cov.getVisual());
                                     }*/
                                    EntityProperty ep = createEntity(bp.getName(), cco.getTitle(),
                                            cco.getUid().trim(), cov.getParamValue(), cov.getRadical(),
                                            cov.getPrice(), PropertyType.OPTION, modalVal);
                                    ec.addProp(ep, rank);
                                    covPrices += "uid=" + ep.uid + "name=" + ep.getName() + "p=" + ep.getPrice()
                                            + "; ";
                                    c++;
                                } else if (ParamType.PERCENTE.equals(bppt)) {
                                    BigDecimal modalVal = BigDecimal.valueOf(0);
                                    /*if(Perception.AUDIAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(cov.getAudial());
                                     }else if(Perception.KINESTETIC.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(cov.getKinestet());
                                     }else if(Perception.VISUAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(cov.getVisual());
                                     }*/
                                    EntityProperty ep = createEntity(bp.getName(), cco.getTitle(),
                                            cco.getUid().trim(), cov.getPercentValue(), cov.getRadical(),
                                            cov.getPrice(), PropertyType.OPTION, modalVal);
                                    ec.addProp(ep, rank);
                                    covPrices += "p=" + ep.getPrice() + "; ";
                                    c++;
                                }
                            }
                        }
                    }
                    //ev.addToLog("covs2:"+c);

                    //myLog+="covprices::"+covPrices+";; ";
                    List<Feature> fs = featureService.getFeatures(car);
                    //myLog+="fs1::"+fs.size()+"; ";
                    //ev.addToLog("fs1:"+fs.size());

                    int f = 0;
                    //String fprices="";
                    for (Feature ft : fs) {
                        BaseParam bp = getBaseParam(bpList, ft.getUid().trim());
                        ParamType bppt = null;
                        if (bp != null) {
                            bppt = bp.getParamType();
                            Rank rank = null;
                            if (fullAList.contains(bp.getUid().trim())) {
                                rank = Rank.A;
                            } else if (fullBList.contains(bp.getUid().trim())) {
                                rank = Rank.B;
                            }
                            if (rank != null) {
                                if (ParamType.DESCRETE.equals(bppt)) {
                                    BigDecimal modalVal = BigDecimal.valueOf(0);
                                    /*if(Perception.AUDIAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(ft.getAudial());
                                     }else if(Perception.KINESTETIC.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(ft.getKinestet());
                                     }else if(Perception.VISUAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(ft.getVisual());
                                     }*/
                                    EntityProperty ep = createEntity(bp.getName(), ft.getTitle(),
                                            ft.getUid().trim(), ft.getParamValue(), ft.getRadical(), 0.0,
                                            PropertyType.FEATURE, modalVal);
                                    ec.addProp(ep, rank);
                                    //fprices+="uid="+ep.getUid()+"; fp="+ep.getPrice()+"; fpv="+ep.getValue()+"; ";
                                    f++;
                                } else if (ParamType.PERCENTE.equals(bppt)) {
                                    BigDecimal modalVal = BigDecimal.valueOf(0);
                                    /*if(Perception.AUDIAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(ft.getAudial());
                                     }else if(Perception.KINESTETIC.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(ft.getKinestet());
                                     }else if(Perception.VISUAL.equals(ev.getPerception())){
                                     modalVal=BigDecimal.valueOf(ft.getVisual());
                                     }*/
                                    EntityProperty ep = createEntity(bp.getName(), ft.getTitle(),
                                            ft.getUid().trim(), ft.getPercentValue(), ft.getRadical(), 0.0,
                                            PropertyType.FEATURE, modalVal);
                                    ec.addProp(ep, rank);
                                    //fprices+="uid="+ep.getUid()+"; fp="+ep.getPrice()+"; fpp="+ep.getValue()+"; ";
                                    f++;
                                }
                            }
                        }
                        //myLog+="fprices="+fprices+" ";
                    }
                    //myLog+="fs2:"+f+"; ";
                    //suplog+="--"+eph.supLog+"--";
                    /*for(String key:ec.getAprops().keySet()){
                     myLog+=" pnsA:"+key+"- "+ec.getAprops().get(key).value;
                     }
                     for(String key:ec.getBprops().keySet()){
                     myLog+=" pnsB:"+key+"- "+ec.getBprops().get(key).value;
                     }*/
                    //ev.addToLog("?? ?: "+p);
                    //ev.addToLog("?    : "+p1);
                    ec.count();

                    if (ec.isCut == true) {
                        cutCount++;
                        /*List<String> evlog = ev.getLog();
                         evlog.add(cutCount+". "+ec.cutLog);
                         ev.setLog(evlog);*/
                        cutCarList.add(ec);
                        cutLog += cutCount + "." + ec.cutLog;
                        //ev.setLog(ev.getLog()+"; "+ec.cutLog);
                    } else {
                        crList.add(ec);
                        //myLog += " " + car.getModel().getMark().getTitle() + "-" + car.getModel().getTitle() + "-" + car.getTitle() /*+ ": type=" + ev.getResourceType().getName() + ": "*/;
                        myLog += " eclog: " + ec.suplog + "; ";
                    }
                }
                ev.setLog(ev.getLog() + "; " + cutLog);
                if (StringAdapter.getString(order).equals("price")) {
                    Collections.sort(crList, priceComparator);
                } else if (StringAdapter.getString(order).equals("static")) {
                    Collections.sort(crList, staticComparator);
                } else if (StringAdapter.getString(order).equals("dinamic")) {
                    Collections.sort(crList, dinamicComparator);
                }
                model.put("carList", crList);
                model.put("evlog", myLog);
                eventService.saveLog(ev.getEventId(), crList, showList, cutCarList, seq);
            } else {
                //baseParamService.getParams();
                model.put("markList", markService.getMarks());
                model.put("baseParamsList", baseParamService.getParams());
            }
            eventService.update(ev);
            model.put("errors", eventService.getResult().getErrors());
        } else {
            return "redirect:/Event/show";
        }
        return "EventShowOne";
    }

    @RequestMapping("/getXls")
    public void getXls(Map<String, Object> model, @RequestParam("eventId") Long eventId,
            HttpServletResponse response) throws Exception {
        File f = new File("/usr/local/etc/xls/" + eventId + ".xls");
        if (f.exists()) {
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition", "attachment; filename=" + eventId + ".xls");
            InputStream inp = new FileInputStream(f);
            HSSFWorkbook wb = new HSSFWorkbook(inp);
            wb.write(response.getOutputStream());
        }
    }

    @RequestMapping("/delete")
    public String delete(Map<String, Object> model, @RequestParam("eventId") Long eventId) throws Exception {
        eventService.delete(eventId);
        return "redirect:/Event/show";
    }

    private IdealEntity createIdealEntity(Sequence seq, Event ev, List<ValueRange> vrList,
            List<ProfileParam> prpList, List<BaseParam> bpList, AStrategy1 A1, BStrategy1 B1, AStrategy2 A2,
            BStrategy2 B2) throws Exception {
        IdealEntity ie = IdealEntity.getinstance();
        Integer i = 0;

        for (FreeValueRange fvr : ev.getFreeValueRanges()) {
            i++;
            if (getBaseParam(bpList, fvr.getUid()) != null) {
                IdealEntityParam iep = IdealEntityParam.getInstance(IdealParametrClass.FREEPARAM,
                        getBaseParam(bpList, fvr.getUid()), i, Rank.A, BigDecimal.valueOf(fvr.getValueMin()),
                        BigDecimal.valueOf(fvr.getValueMax()), BigDecimal.valueOf(fvr.getAmin()),
                        BigDecimal.valueOf(fvr.getAmax()));
                if (A1.equals(AStrategy1.AMAX)) {
                    iep.setAimBefore(iep.getValueMax());
                } else {
                    iep.setAimBefore(iep.getValueMin());
                }
                if (A2.equals(AStrategy2.AMAX)) {
                    iep.setAimAfter(iep.getValueMax());
                } else {
                    iep.setAimAfter(iep.getValueMin());
                }
                ie.addParamArad(iep);
            }
        }

        /*for (ValueRange vr : vrList) {
         if (getBaseParam(bpList, vr.getUid()) != null) {
         if (!ie.getAUidList().contains(vr.getUid().trim())) {
         String log = "";
         Boolean inpp = false;
         Boolean radd = false;
         if (existUidInPP(prpList, vr.getUid())) {
         inpp = true;
         }
         log += "inpp:" + inpp + ";";
            
         BaseParam bp = getBaseParam(bpList, vr.getUid());
         if (bp != null) {
         radd = isRaddActiveInParam(bp.getRadical(), ev.getRadical());
         log += "radd:" + radd + ";";
         i++;
         IdealEntityParam iep = IdealEntityParam.getInstance(IdealParametrClass.SCENE, bp, i, Rank.B, BigDecimal.valueOf(vr.getValueMin()), BigDecimal.valueOf(vr.getValueMax()), BigDecimal.valueOf(vr.getAmin()), BigDecimal.valueOf(vr.getAmax()));
         if (inpp == false) {
         //if(B1.equals(BStrategy1.BMAX)){
         iep.setAimBefore(iep.getValueMax());
         iep.setAimAfter(iep.getValueMax());
            
         if (radd == false) {
         ie.addParamBnorad(iep);
         log += "bNo;";
         } else {
         log += "B;";
         ie.addParamBrad(iep);
         }
         } else {
         if (A1.equals(AStrategy1.AMAX)) {
         iep.setAimBefore(iep.getValueMax());
         } else {
         iep.setAimBefore(iep.getValueMin());
         }
         if (A2.equals(AStrategy2.AMAX)) {
         iep.setAimAfter(iep.getValueMax());
         } else {
         iep.setAimAfter(iep.getValueMin());
         }
         iep.rank = Rank.A;
         if (radd == false) {
         log += "aNo;";
         ie.addParamAnorad(iep);
         } else {
         log += "A;";
         ie.addParamArad(iep);
         }
         }
         } else {
         log += vr.getUid() + " - null";
         }
         //IdealEntityLog.add(log);
         }
         }
         }*/
        HashMap<String, SequenceValueRange> svrMap = new HashMap();

        if (seq != null && !seq.getSequenceValueRanges().isEmpty()) {
            for (SequenceValueRange svr : seq.getSequenceValueRanges()) {
                svrMap.put(svr.getUid().trim(), svr);
            }
        }

        for (ValueRange vr : vrList) {
            String suid = vr.getUid().trim();
            if (getBaseParam(bpList, suid) != null) {
                if (!ie.getAUidList().contains(suid)) {
                    String log = "";
                    Boolean paramA = false;
                    //log += "inpp:" + inpp + ";";
                    BaseParam bp = getBaseParam(bpList, suid);
                    if (bp != null) {
                        Boolean radd = isRaddActiveInParam(bp.getRadical(), ev.getRadical());
                        //log += "radd:" + radd + ";";
                        BigDecimal amin = BigDecimal.valueOf(vr.getAmin());
                        BigDecimal min = BigDecimal.valueOf(vr.getValueMin());
                        BigDecimal max = BigDecimal.valueOf(vr.getValueMax());
                        BigDecimal amax = BigDecimal.valueOf(vr.getAmax());
                        i++;
                        IdealParametrClass idealClass = IdealParametrClass.SCENE;
                        if (svrMap.keySet().contains(suid)) {
                            paramA = true;
                            SequenceValueRange svr = svrMap.get(suid);
                            if (svr.getAmin() != null && svr.getValueMin() != null && svr.getValueMax() != null
                                    && svr.getAmax() != null) {
                                amin = BigDecimal.valueOf(svr.getAmin());
                                min = BigDecimal.valueOf(svr.getValueMin());
                                max = BigDecimal.valueOf(svr.getValueMax());
                                amax = BigDecimal.valueOf(svr.getAmax());
                                idealClass = IdealParametrClass.SEQUENCE;
                            }
                        }

                        IdealEntityParam iep = IdealEntityParam.getInstance(idealClass, bp, i, Rank.B, min, max,
                                amin, amax);
                        if (paramA == false) {
                            //if(B1.equals(BStrategy1.BMAX)){
                            iep.setAimBefore(iep.getValueMin());
                            iep.setAimAfter(iep.getValueMax());

                            if (radd == false) {
                                ie.addParamBnorad(iep);
                                log += "bNo;";
                            } else {
                                log += "B;";
                                ie.addParamBrad(iep);
                            }
                        } else {
                            iep.setRank(Rank.A);
                            if (A1.equals(AStrategy1.AMAX)) {
                                iep.setAimBefore(iep.getValueMax());
                            } else {
                                iep.setAimBefore(iep.getValueMin());
                            }
                            if (A2.equals(AStrategy2.AMAX)) {
                                iep.setAimAfter(iep.getValueMax());
                            } else {
                                iep.setAimAfter(iep.getValueMin());
                            }
                            if (radd == false) {
                                log += "aNo;";
                                ie.addParamAnorad(iep);
                            } else {
                                log += "A;";
                                ie.addParamArad(iep);
                            }
                        }
                    } else {
                        log += vr.getUid() + " - null";
                    }
                    //IdealEntityLog.add(log);
                }
            }
        }
        /*if (seq != null && !seq.getSequenceValueRanges().isEmpty()) {
         for (SequenceValueRange svr : seq.getSequenceValueRanges()) {
         if (getBaseParam(bpList, svr.getUid()) != null) {
         if (!ie.getAUidList().contains(svr.getUid().trim())) {
         if (ie.getBUidList().contains(svr.getUid().trim())) {
         BaseParam bp = getBaseParam(bpList, svr.getUid());
         Boolean radd = false;
         if (bp != null) {
         String uid = bp.getUid().trim();
         radd = isRaddActiveInParam(bp.getRadical(), ev.getRadical());
         i++;
         IdealEntityParam iep = IdealEntityParam.getInstance(IdealParametrClass.SSEQUENCE, bp, i, Rank.A, BigDecimal.valueOf(svr.getValueMin()), BigDecimal.valueOf(svr.getValueMax()), BigDecimal.valueOf(svr.getAmin()), BigDecimal.valueOf(svr.getAmax()));
         ie.remove(uid);
         if (radd) {
         ie.addParamArad(iep);
         } else {
         ie.addParamAnorad(iep);
         }
            
         }
         } else {
         Boolean radd = false;
         BaseParam bp = getBaseParam(bpList, svr.getUid());
         if (bp != null) {
         i++;
         radd = isRaddActiveInParam(bp.getRadical(), ev.getRadical());
         IdealEntityParam iep = IdealEntityParam.getInstance(IdealParametrClass.PSEQUENCE, bp, i, Rank.B, BigDecimal.valueOf(svr.getValueMin()), BigDecimal.valueOf(svr.getValueMax()), BigDecimal.valueOf(svr.getAmin()), BigDecimal.valueOf(svr.getAmax()));
         if (radd) {
         ie.addParamBrad(iep);
         } else {
         ie.addParamBnorad(iep);
         }
         }
         }
         }
         }
         }
         }*/
        return ie;
    }

    private static Comparator<EntityCar> dinamicComparator = new Comparator<EntityCar>() {
        @Override
        public int compare(EntityCar o1, EntityCar o2) {
            return o2.dinamicRateA.add(o2.dinamicRateB).compareTo(o1.dinamicRateA.add(o1.dinamicRateB));
        }
    };
    private static Comparator<EntityCar> staticComparator = new Comparator<EntityCar>() {
        @Override
        public int compare(EntityCar o1, EntityCar o2) {
            return o2.staticRate.compareTo(o1.staticRate);
        }
    };
    private static Comparator<EntityCar> priceComparator = new Comparator<EntityCar>() {
        @Override
        public int compare(EntityCar o1, EntityCar o2) {
            return o2.fullPrice.compareTo(o1.fullPrice);
        }
    };

    private Comparator<IdealEntityParam> iepComparator = new Comparator<IdealEntityParam>() {
        @Override
        public int compare(IdealEntityParam o1, IdealEntityParam o2) {
            return o1.number.compareTo(o2.number);
        }
    };

    private boolean existUidInPP(List<ProfileParam> prpList, String uid) {
        for (ProfileParam vr : prpList) {
            if (uid.trim().equals(vr.getUid().trim())) {
                return true;
            }
        }
        return false;
    }

    /*private BaseParam getBaseParamByUid(List<BaseParam> bpList, String uid) {
     for (BaseParam bp : bpList) {
     if (uid.trim().equals(bp.getUid().trim())) {
     return bp;
     }
     }
     return null;
     }*/
    private boolean isRaddActiveInParam(String paramRad, String requestRad) {

        String[] reqrads = requestRad.trim().split("");
        for (String rr : reqrads) {
            if (paramRad.trim().contains(rr)) {
                return true;
            }
        }
        return false;
    }

    private BaseParam getBaseParam(List<BaseParam> bpList, String uid) {
        if (uid != null) {
            for (BaseParam bp : bpList) {
                if (bp.getUid().equals(uid.trim())) {
                    return bp;
                }
            }
        }
        return null;
    }

    private EntityProperty createEntity(String title, String name, String uid, Long val, String radical,
            Double price, PropertyType type, BigDecimal modalVal) {
        BigDecimal valx = null;
        if (val == null) {
            valx = BigDecimal.valueOf(0);
        } else {
            valx = BigDecimal.valueOf(val);
        }
        return new EntityProperty(title, name, uid, valx, radical, modalVal, price, type, " 1");
    }

    private EntityProperty createEntity(String title, String name, String uid, Double val, String radical,
            Double price, PropertyType type, BigDecimal modalVal) {
        BigDecimal valx = null;
        if (val == null) {
            valx = BigDecimal.valueOf(0);
        } else {
            valx = BigDecimal.valueOf(val);
        }
        return new EntityProperty(title, name, uid, valx, radical, modalVal, price, type, " 1");
    }

    /*public void addToMyLog(String myLog,String log) {
     myLog +=" "+log+"; ";
     }*/
}