Java tutorial
/* * 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+"; "; }*/ }