data.services.SceneService.java Source code

Java tutorial

Introduction

Here is the source code for data.services.SceneService.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 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);
     }
        
     }*/
}