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 data.services; import data.dao.SceneDao; import data.entity.BaseParam; import data.entity.CarProperty; import data.entity.PropertyName; import data.entity.Scene; import data.entity.ValueRange; import data.services.parent.PrimService; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import static org.apache.coyote.http11.Constants.a; import org.apache.log4j.Logger; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import static org.hibernate.validator.internal.util.CollectionHelper.newArrayList; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.ScopedProxyMode; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import support.StringAdapter; /** * * @author bezdatiuzer */ @Service @Transactional @Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS) public class SceneService extends PrimService { @Autowired private SceneDao sceneDao; @Autowired private ValueRangeService valueRangeService; @Autowired private BaseParamService baseParamService; public List<Scene> getScenes() { return sceneDao.getAllAsc("name"); } public Scene getScene(Long sceneId) { return sceneDao.find(sceneId); } public void delete(Long sceneId) { Scene sc = sceneDao.find(sceneId); for (ValueRange vr : sc.getValueRanges()) { valueRangeService.delete(vr.getId()); } if (sc != null) { sceneDao.delete(sc); } } public void deleteValueRange(Long valueRangeId) { valueRangeService.delete(valueRangeId); } public void create(Scene sc) throws Exception { if (sceneDao.find(sc).isEmpty()) { if (validate(sc)) { sceneDao.save(sc); } } else { addError(" ? ??"); } } public Scene find(Long sceneId) { return sceneDao.find(sceneId); } public void addValuesToScene(Long sceneTo, Long sceneFrom) { Scene sceneOne = sceneDao.find(sceneTo); Scene sceneSource = sceneDao.find(sceneFrom); List<ValueRange> vrListSource = sceneSource.getValueRanges(); List<ValueRange> vrListOne = sceneOne.getValueRanges(); Map<String, ValueRange> supMapOne = new HashMap(); if (!vrListSource.isEmpty()) { List<ValueRange> supList = newArrayList(); for (ValueRange vr : vrListOne) { supMapOne.put(vr.getUid().trim(), vr); } for (ValueRange vr : vrListSource) { if (!supMapOne.containsKey(vr.getUid().trim())) { supMapOne.put(vr.getUid().trim(), vr); } } for (ValueRange vr : supMapOne.values()) { ValueRange newVr = new ValueRange(); newVr.setScene(sceneOne); newVr.setAmax(vr.getAmax()); newVr.setAmin(vr.getAmin()); newVr.setUid(vr.getUid().trim()); newVr.setValueMax(vr.getValueMax()); newVr.setValueMin(vr.getValueMin()); valueRangeService.create(newVr); } } } public void addValuesFromHeap(Long sceneId, String heap) { if (sceneId != null && !heap.equals("")) { String[] params = heap.trim().split(";;"); if (params.length > 0) { int cnt = 0; Scene updScene = find(sceneId); for (ValueRange vr : updScene.getValueRanges()) { //valueRangeService.delete(vr.getId()); } for (String param : params) { if (!param.equals("")) { cnt++; String[] vals = param.trim().split("::"); //ValueRange supVr = new ValueRange(); ValueRange vr = valueRangeService.getParam(vals[0].trim(), vals[1].trim(), vals[2].trim(), vals[3].trim(), vals[4].trim()); vr.setScene(updScene); /*supVr.setScene(updScene); supVr.setUid(vals[0].trim()); supVr.setvalueRangeServiceUid(vals[0].trim());*/ valueRangeService.create(vr); //addError(cnt + param + valueRangeService.getResult().getErrors()); } } } else { addError(" ?"); } } else { addError("? "); } } public LinkedHashMap<BaseParam, ValueRange> getMapForScene(Long sceneId) { LinkedHashMap<BaseParam, ValueRange> res = new LinkedHashMap(); Scene sc = sceneDao.find(sceneId); if (!sc.getValueRanges().isEmpty()) { List<ValueRange> vrList = sc.getValueRanges(); Collections.sort(vrList, vrComparator); for (ValueRange vr : vrList) { res.put(baseParamService.getBaseParam(vr.getUid()), vr); } } //addError("size=" + res.keySet().size()); return res; } public void addValueRange(Long sceneId, String uid, Long amin, Long valueMin, Long valueMax, Long amax) { Scene sc = sceneDao.find(sceneId); ValueRange vr = new ValueRange(); vr.setScene(sc); vr.setUid(uid.trim()); vr.setAmin(amin); vr.setValueMin(valueMin); vr.setValueMax(valueMax); vr.setAmax(amax); if (validate(vr)) { valueRangeService.create(vr); } } public List<BaseParam> getBpListNotIncludedInScene(Long sceneId) { List<BaseParam> res = baseParamService.getParams(); Scene sc = sceneDao.find(sceneId); List<ValueRange> vrList = sc.getValueRanges(); if (!vrList.isEmpty()) { List<BaseParam> supBpList = new ArrayList(); List<String> supCutedUidList = new ArrayList(); for (ValueRange vr : vrList) { supCutedUidList.add(vr.getUid().trim()); } for (BaseParam bp : res) { if (!supCutedUidList.contains(bp.getUid().trim())) { supBpList.add(bp); } } return supBpList; } return res; } /*public List<ValueRange> getParamsForScene(Long sceneId) { List<ValueRange> res = new ArrayList(); Scene sc = sceneDao.find(sceneId); if(sc!=null){ if (!sc.getValueRanges().isEmpty()) { List<ValueRange> vrList = sc.getValueRanges(); Collections.sort(vrList, vrComparator); return vrList; } } //addError("size=" + res.keySet().size()); return res; }*/ public static Comparator<ValueRange> vrComparator = new Comparator<ValueRange>() { @Override public int compare(ValueRange o1, ValueRange o2) { return o1.getUid().compareTo(o2.getUid()); } }; public HSSFWorkbook getXls(Long sceneId) throws Exception { Scene scene = sceneDao.find(sceneId); if (scene != null) { Logger log = Logger.getLogger(this.getClass()); try { HSSFWorkbook workbook = new HSSFWorkbook(); List<ValueRange> vrList = scene.getValueRanges(); HSSFSheet sheet = workbook.createSheet("FirstSheet"); HSSFRow rowhead = sheet.createRow((short) 0); rowhead.createCell(0).setCellValue("UID"); rowhead.createCell(1).setCellValue("??"); rowhead.createCell(2).setCellValue("? ?"); rowhead.createCell(3).setCellValue("?"); rowhead.createCell(4).setCellValue("?"); rowhead.createCell(5).setCellValue("? ?"); int n = 1; if (!vrList.isEmpty()) { for (ValueRange vr : vrList) { BaseParam bp = baseParamService.getBaseParam(vr.getUid().trim()); HSSFRow rowbody = sheet.createRow((short) n); rowbody.createCell(0).setCellValue(StringAdapter.getString(vr.getUid())); rowbody.createCell(2).setCellValue(StringAdapter.getString(vr.getAmin())); rowbody.createCell(3).setCellValue(StringAdapter.getString(vr.getValueMin())); rowbody.createCell(4).setCellValue(StringAdapter.getString(vr.getValueMax())); rowbody.createCell(5).setCellValue(StringAdapter.getString(vr.getAmax())); if (bp == null) { rowbody.createCell(1).setCellValue( " ?? ?: " + vr.getUid()); } else { rowbody.createCell(1).setCellValue(StringAdapter.getString(bp.getName())); } n++; } ; } return workbook; } catch (Exception e) { throw new Exception(e); } } else { throw new Exception(" . "); } //return null; } public void updateFromXml(File fl, Long sceneId) throws Exception { try { Scene scene = sceneDao.find(sceneId); if (scene != null) { FileInputStream fi = new FileInputStream(fl); int i = 0; int m = 0; try { List<ValueRange> newVrList = new ArrayList(); HSSFWorkbook workbook = new HSSFWorkbook(fi); HSSFSheet sheet = workbook.getSheetAt(0); Iterator<Row> it = sheet.iterator(); it.next(); while (it.hasNext()) { Row row = it.next(); Cell uidc = row.getCell(0); String uid = ""; if (uidc != null) { uid = StringAdapter.HSSFSellValue(uidc).trim(); if (uid.contains(".")) { int point = uid.indexOf("."); uid = uid.substring(0, point); } } Cell aminCell = row.getCell(2); Long amin = (long) 0; if (aminCell != null) { String supstr = StringAdapter.HSSFSellValue(aminCell); if (supstr.contains(".")) { int point = supstr.indexOf("."); supstr = supstr.substring(0, point); } if (!supstr.equals("")) { amin = StringAdapter.toLong(supstr); } } Cell minCell = row.getCell(3); Long min = (long) 0; if (minCell != null) { String supstr = StringAdapter.HSSFSellValue(minCell); if (supstr.contains(".")) { int point = supstr.indexOf("."); supstr = supstr.substring(0, point); } if (!supstr.equals("")) { min = StringAdapter.toLong(supstr); } } Cell maxCell = row.getCell(4); Long max = (long) 0; if (maxCell != null) { String supstr = StringAdapter.HSSFSellValue(maxCell); if (supstr.contains(".")) { int point = supstr.indexOf("."); supstr = supstr.substring(0, point); } if (!supstr.equals("")) { max = StringAdapter.toLong(supstr); } } Cell amaxCell = row.getCell(5); Long amax = (long) 0; if (amaxCell != null) { String supstr = StringAdapter.HSSFSellValue(amaxCell); if (supstr.contains(".")) { int point = supstr.indexOf("."); supstr = supstr.substring(0, point); } if (!supstr.equals("")) { amax = StringAdapter.toLong(supstr); } } ValueRange vr = new ValueRange(); vr.setUid(uid); vr.setAmin(amin); vr.setValueMin(min); vr.setValueMax(max); vr.setAmax(amax); vr.setScene(scene); newVrList.add(vr); } List<ValueRange> oldVrList = scene.getValueRanges(); for (ValueRange vr : oldVrList) { valueRangeService.delete(vr.getId()); } for (ValueRange vr : newVrList) { valueRangeService.create(vr); } workbook.close(); } catch (Exception e) { //addError(StringAdapter.getStackTraceException(e) + "str:"+i+"; "); throw new Exception(StringAdapter.getStackTraceException(e) + "str:" + i + "; "); } fi.close(); } } catch (Exception e) { //addError(" xml"); //addError(e.getMessage()); throw new Exception(StringAdapter.getStackTraceException(e)); } } /*public void combine(String name,Long sceneId1,Long sceneId2){ Scene sc1=sceneDao.find(sceneId1); Scene sc2=sceneDao.find(sceneId2); Scene ns = new Scene(); ns.setName(name); List<Sequence> seqlist = new ArrayList(); for(Sequence seq:sc1.getSequence()){ seqlist.add(seq); } for(Sequence seq:sc2.getSequence()){ seqlist.add(seq); } }*/ }