data.services.PropertyNameService.java Source code

Java tutorial

Introduction

Here is the source code for data.services.PropertyNameService.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.CarDao;
import data.dao.CarPropertyDao;
import data.dao.PropertyNameDao;
import data.entity.Car;
import data.entity.CarProperty;
import data.entity.PropertyName;
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.Iterator;
import java.util.List;
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 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 PropertyNameService extends PrimService {

    @Autowired
    private PropertyNameDao propertyNameDao;
    @Autowired
    private CarDao carDao;
    @Autowired
    private CarPropertyDao carPropertyDao;

    public void create(PropertyName pn) throws Exception {
        /*PropertyName suppn = new PropertyName();
        suppn.setCar(pn.getCar());
        suppn.setCarProperty(pn.getCarProperty());
        if (propertyNameDao.find(suppn).isEmpty()) {*/
        if (validate(pn)) {
            propertyNameDao.save(pn);
        }
        //}
    }

    /*public void update(Long pnId, Object paramName, Object paramValue) throws Exception {
    if (pnId != null){
        Long newPramId = Long.valueOf(StringAdapter.getString(paramId));
        BaseParam bp = baseParamDao.find(newPramId);
        
        if (bp != null) {
            switch (StringAdapter.getString(paramName)) {
                case "uid":
                    bp.setUid(StringAdapter.getString(paramValue));
                    break;
                case "name":
                    bp.setName(StringAdapter.getString(paramValue));
                    break;
                case "paramType":
                    bp.setParamType(ParamType.getParamTypeFromString(StringAdapter.getString(paramValue)));
                    break;
                case "staticType":
                    bp.setStaticType(StaticType.getStaticTypeFromString(StringAdapter.getString(paramValue)));
                    break;
                case "radical":
                    bp.setRadical(StringAdapter.getString(paramValue));
                    break;
                case "perception":
                    bp.setPerception(StringAdapter.getString(paramValue));
                    break;
                case "audial":
                    bp.setAudial(StringAdapter.getString(paramValue));
                    break;
                case "visual":
                    bp.setVisual(StringAdapter.getString(paramValue));
                    break;
                case "kinestet":
                    bp.setKinestet(StringAdapter.getString(paramValue));
                    break;
            }
            if (validate(bp)) {
                baseParamDao.update(bp);
            }
        } else {
            addError("  .");
        }
    }
    }*/

    /*public void delete(Long baseParamId) {
    BaseParam bp = baseParamDao.find(baseParamId);
    if (bp != null) {
        List<PercentParam> percparlist = bp.getPercentParams();
        if (!percparlist.isEmpty()) {
            for (PercentParam pp : percparlist) {
                percentParamService.delete(pp.getId());
            }
        }
        baseParamDao.delete(bp);
            
    }
    }*/

    public List<PropertyName> getProperties(Long carId) {
        Car car = carDao.find(carId);
        return car.getPropertyNames();
        //return propertyNameDao.getPropertiesByCar(carId);
    }

    public List<Long> getUniqueCarIds() {
        return propertyNameDao.getUniqueCarIds();
    }

    public List<Car> getCars() {
        List<Long> carIds = getUniqueCarIds();
        List<Car> carList = new ArrayList();
        for (Long id : carIds) {
            Car car = carDao.find(id);
            carList.add(car);
        }
        return carList;
    }

    /*public List<String> getUniquePropertyNames(Long propId){
    return propertyNameDao.getUniquePropertyNames(propId);
    } */

    public List<PropertyName> getUniquePropertyNames(Long propId) throws Exception {
        List<PropertyName> res = propertyNameDao.getUniquePropertyNames(propId);
        Collections.sort(res, UIDComparator);
        return res;
    }

    private static Comparator<PropertyName> UIDComparator = new Comparator<PropertyName>() {
        @Override
        public int compare(PropertyName o1, PropertyName o2) {
            return o1.getCarProperty().getTitle().compareTo(o2.getCarProperty().getTitle());
        }
    };

    public void updateByNameAndPropertyId(String name, Long propId, Long percentValue, Double paramValue, Long a,
            Long v, Long k, String rad) throws Exception {
        //throw new Exception(name+"-"+propId+"-"+percentValue+"-"+a+"-"+rad);
        PropertyName pn = new PropertyName();
        pn.setPropertyNameValue(name);
        pn.setCarProperty(carPropertyDao.find(propId));
        for (PropertyName upn : propertyNameDao.find(pn)) {
            upn.setAudial(a);
            upn.setVisual(v);
            upn.setKinestet(k);
            upn.setPercentValue(percentValue);
            upn.setParamValue(paramValue);
            upn.setRadical(rad);
            propertyNameDao.update(upn);
        }
    }

    public HSSFWorkbook getXls(Long propId) {

        Logger log = Logger.getLogger(this.getClass());
        try {
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet("FirstSheet");
            HSSFRow rowhead = sheet.createRow((short) 0);
            rowhead.createCell(0).setCellValue("ID");
            rowhead.createCell(1).setCellValue("UID");
            rowhead.createCell(2).setCellValue("??");
            rowhead.createCell(3).setCellValue("???");
            rowhead.createCell(4).setCellValue("");
            rowhead.createCell(5).setCellValue("");
            rowhead.createCell(6).setCellValue("");
            rowhead.createCell(7).setCellValue("?");
            rowhead.createCell(8).setCellValue("");
            rowhead.createCell(9).setCellValue("?");
            List<PropertyName> plist = getUniquePropertyNames(propId);
            int n = 1;
            if (!plist.isEmpty()) {
                for (PropertyName ob : plist) {
                    HSSFRow rowbody = sheet.createRow((short) n);
                    rowbody.createCell(0).setCellValue(StringAdapter.getString(ob.getCarProperty().getId()));
                    rowbody.createCell(1).setCellValue(StringAdapter.getString(ob.getCarProperty().getUid()));
                    rowbody.createCell(2).setCellValue(StringAdapter.getString(ob.getCarProperty().getTitle()));
                    rowbody.createCell(3).setCellValue(StringAdapter.getString(ob.getPropertyNameValue()));
                    rowbody.createCell(4).setCellValue(StringAdapter.getString(ob.getRadical()));
                    rowbody.createCell(5).setCellValue(StringAdapter.getString(ob.getPercentValue()));
                    rowbody.createCell(6)
                            .setCellValue(StringAdapter.getString(ob.getParamValue()).replace(".", ","));
                    rowbody.createCell(7).setCellValue(StringAdapter.getString(ob.getAudial()));
                    rowbody.createCell(8).setCellValue(StringAdapter.getString(ob.getVisual()));
                    rowbody.createCell(9).setCellValue(StringAdapter.getString(ob.getKinestet()));
                    n++;
                }
                ;
            }
            return workbook;
        } catch (Exception e) {
            log.warn("HSSFWorkbook.getXls()", e);
        }
        return null;
    }

    public void updateFromXml(File fl) throws Exception {
        try {
            FileInputStream fi = new FileInputStream(fl);
            int i = 0;
            int m = 0;
            try {
                HSSFWorkbook workbook = new HSSFWorkbook(fi);
                HSSFSheet sheet = workbook.getSheetAt(0);
                Iterator<Row> it = sheet.iterator();
                it.next();
                while (it.hasNext()) {

                    Row row = it.next();
                    Long cpid = StringAdapter.toLong(StringAdapter.HSSFSellValue(row.getCell(0)));

                    Cell pnValc = row.getCell(3);
                    String pnVal = "";
                    if (pnValc != null) {
                        pnVal = StringAdapter.HSSFSellValue(pnValc).trim();
                    }

                    Cell radc = row.getCell(4);
                    String rad = "";
                    if (radc != null) {
                        rad = StringAdapter.HSSFSellValue(radc);
                        if (rad.contains(".")) {
                            int point = rad.indexOf(".");
                            rad = rad.substring(0, point);
                        }
                        if (rad.trim().equals("0")) {
                            rad = "";
                        } else {
                            rad = rad.replace(" ", "");
                        }
                    }

                    Cell percc = row.getCell(5);
                    Long perc = (long) 0;
                    if (percc != null) {
                        String percstr = StringAdapter.HSSFSellValue(percc);
                        if (percstr.contains(".")) {
                            int point = percstr.indexOf(".");
                            percstr = percstr.substring(0, point);
                        }
                        if (!percstr.equals("")) {
                            perc = StringAdapter.toLong(percstr);
                        }
                    }

                    Cell valc = row.getCell(6);
                    Double val = (double) 0;
                    if (valc != null) {
                        String valstr = StringAdapter.HSSFSellValue(valc).replace(",", ".").trim();
                        val = StringAdapter.toDouble(valstr);
                    }

                    Cell audc = row.getCell(7);
                    Long a = (long) 0;
                    if (audc != null) {
                        String supstr = StringAdapter.HSSFSellValue(audc);
                        if (supstr.contains(".")) {
                            int point = supstr.indexOf(".");
                            supstr = supstr.substring(0, point);
                        }
                        a = Long.valueOf(supstr);
                    }

                    Cell visc = row.getCell(8);
                    Long v = (long) 0;
                    if (visc != null) {
                        String supstr = StringAdapter.HSSFSellValue(visc);
                        if (supstr.contains(".")) {
                            int point = supstr.indexOf(".");
                            supstr = supstr.substring(0, point);
                        }
                        v = Long.valueOf(supstr);
                    }

                    Cell kinc = row.getCell(9);
                    Long k = (long) 0;
                    if (kinc != null) {
                        String supstr = StringAdapter.HSSFSellValue(kinc);
                        if (supstr.contains(".")) {
                            int point = supstr.indexOf(".");
                            supstr = supstr.substring(0, point);
                        }
                        k = Long.valueOf(supstr);
                    }

                    /*Cell aCell = row.getCell(7);
                    Long a=(long)0;
                    if(aCell!=null){
                    if(aCell.getCellType()==Cell.CELL_TYPE_NUMERIC){
                        a=StringAdapter.toLong(StringAdapter.getString(aCell.getNumericCellValue()));
                    }else if(aCell.getCellType()==Cell.CELL_TYPE_STRING){
                        a=StringAdapter.toLong(aCell.getStringCellValue().trim());
                    }
                        
                    }
                        
                    Cell vCell = row.getCell(8);
                    Long v=(long)0;
                    if(vCell!=null){
                    if(vCell.getCellType()==Cell.CELL_TYPE_NUMERIC){
                        v=StringAdapter.toLong(StringAdapter.getString(vCell.getNumericCellValue()));
                    }else if(vCell.getCellType()==Cell.CELL_TYPE_STRING){
                        v=StringAdapter.toLong(vCell.getStringCellValue().trim());
                    }
                    }
                        
                    Cell kCell = row.getCell(9);
                    Long k=(long)0;
                    if(kCell!=null){
                    if(kCell.getCellType()==Cell.CELL_TYPE_NUMERIC){
                        k=StringAdapter.toLong(StringAdapter.getString(kCell.getNumericCellValue()));
                    }else if(kCell.getCellType()==Cell.CELL_TYPE_STRING){
                        k=StringAdapter.toLong(kCell.getStringCellValue().trim());
                    }
                    }*/

                    CarProperty cp = carPropertyDao.find(cpid);
                    PropertyName suppn = new PropertyName();
                    suppn.setPropertyNameValue(pnVal);
                    suppn.setCarProperty(cp);
                    List<PropertyName> pnlist = propertyNameDao.findByPropertyAndPnValue(suppn);
                    if (!pnlist.isEmpty()) {
                        for (PropertyName pn : pnlist) {
                            if (!(pn.getPercentValue().equals(perc) && pn.getParamValue().equals(val)
                                    && pn.getRadical().equals(rad) && pn.getAudial().equals(a)
                                    && pn.getVisual().equals(v) && pn.getKinestet().equals(k))) {
                                pn.setPercentValue(perc);
                                pn.setParamValue(val);
                                pn.setRadical(rad);
                                pn.setVisual(v);
                                pn.setAudial(a);
                                pn.setKinestet(k);
                                if (validate(pn)) {
                                    propertyNameDao.update(pn);
                                }
                                i++;
                            }
                            m++;
                        }
                    }
                    //}

                }
                workbook.close();
                addError(" " + i + " ?; ? ?: " + m + "; ");
            } 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));
        }
    }

}