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.SequenceDao; import data.dao.SequenceValueRangeDao; import data.entity.BaseParam; import data.entity.Scene; import data.entity.Sequence; import data.entity.SequenceValueRange; import data.entity.ValueRange; import data.services.parent.PrimService; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import logic.AStrategy1; import logic.AStrategy2; import logic.BStrategy1; import logic.BStrategy2; import logic.CanonicalRadix; import logic.ResourceProfitability; import logic.ResourceStaticType; import logic.ToxicParamType; import logic.ToxicValueType; 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 SequenceService extends PrimService { @Autowired private SequenceDao sequenceDao; @Autowired private BaseParamService baseParamService; @Autowired private SequenceValueRangeService sequenceValueRangeService; public List<Sequence> getSequences() { return sequenceDao.getAllAsc("radCore"); } public void delete(Long sequenceId) { Sequence sec = sequenceDao.find(sequenceId); if (sec != null) { for (SequenceValueRange svr : sec.getSequenceValueRanges()) { sequenceValueRangeService.delete(svr.getId()); } sequenceDao.delete(sec); } } public void create(Sequence sec) throws Exception { if (sequenceDao.find(sec).isEmpty()) { if (validate(sec)) { sequenceDao.save(sec); } } else { addError("? ?? ??"); } } public Sequence find(Long sequenceId) { return sequenceDao.find(sequenceId); } /*public StrategyBeforeStatic getStrategyBeforeStatic(Scene sc, String radix) throws Exception { return getSequence(sc, radix).getSel1(); } public StrategyAfterStatic getStrategyAfterStatic(Scene sc, String radix) throws Exception { return getSequence(sc, radix).getSel2(); }*/ public void updateSequenceByScene(Sequence seq, Scene sc) { List<Scene> scLs = seq.getScenes(); scLs.add(sc); seq.setScenes(scLs); sequenceDao.update(seq); } public void deleteSequenceByScene(Sequence seq, Scene sc) { List<Scene> scLs = seq.getScenes(); List<Scene> neqscLs = new ArrayList(); for (Scene scen : scLs) { if (!scen.getSceneId().equals(sc.getSceneId())) { neqscLs.add(scen); } } seq.setScenes(neqscLs); sequenceDao.update(seq); } public Sequence getSequenceFromSceneAndRadx(Scene sc, String radix) throws Exception { // ? List<Sequence> slist = sequenceDao.findBySceneId(sc); Sequence scs = getSequenceFromList(slist, radix); if (scs != null) { return scs; } //? ? - ? List<Sequence> withoutlist = sequenceDao.findWithoutScenes(); scs = getSequenceFromList(withoutlist, radix); if (scs != null) { return scs; } return getDefault(); } private Sequence getDefault() { Sequence seq = new Sequence(); /*sc.setSel1(StrategyBeforeStatic.AMINBMIN); sc.setSel2(StrategyAfterStatic.NOONE);*/ seq.setRadCore("default"); seq.setAStrat1(AStrategy1.AMIN); seq.setBStrat1(BStrategy1.BMIN); seq.setResourceType(ResourceStaticType.FREEONLY); seq.setParamTox1(ToxicParamType.EXTRACLEAR); seq.setValueTox1(ToxicValueType.EXTRACLEAR); seq.setResourceProf(ResourceProfitability.NONE); seq.setAStrat2(AStrategy2.AMAX); seq.setBStrat2(BStrategy2.NONE); seq.setParamTox2(ToxicParamType.EXTRACLEAR); seq.setValueTox2(ToxicValueType.EXTRACLEAR); return seq; } private Sequence getSequenceFromList(List<Sequence> secList, String radix) throws Exception { CanonicalRadix evCr = new CanonicalRadix(radix.trim()); /*addError("RC = " + radix+"; "); addError("1 - " + evCr.first+"; "); addError("2 - " + evCr.second+"; "); addError("3 - " + evCr.third+"; ");*/ if (!secList.isEmpty()) { for (Sequence se : secList) { CanonicalRadix seqCr = new CanonicalRadix(se.getRadCore()); if (seqCr.first.equals(evCr.first) && seqCr.second.equals(evCr.second) && seqCr.third.equals(evCr.third)) { return se; } } for (Sequence se : secList) { CanonicalRadix crList = new CanonicalRadix(se.getRadCore()); if (crList.first.equals(evCr.first) && crList.second.equals(evCr.second) && crList.third.equals("*")) { return se; } } for (Sequence se : secList) { CanonicalRadix crList = new CanonicalRadix(se.getRadCore()); if (crList.first.equals(evCr.first) && crList.second.equals("*") && crList.third.equals("*")) { return se; } } for (Sequence se : secList) { CanonicalRadix crList = new CanonicalRadix(se.getRadCore()); if (crList.first.equals("*") && crList.second.equals(evCr.second) && crList.third.equals(evCr.third)) { return se; } } for (Sequence se : secList) { CanonicalRadix crList = new CanonicalRadix(se.getRadCore()); if (crList.first.equals("*") && crList.second.equals(evCr.second) && crList.third.equals("*")) { return se; } } for (Sequence se : secList) { CanonicalRadix crList = new CanonicalRadix(se.getRadCore()); if (crList.first.equals("*") && crList.second.equals("*") && crList.third.equals(evCr.third)) { return se; } } for (Sequence se : secList) { CanonicalRadix crList = new CanonicalRadix(se.getRadCore()); if (crList.first.equals("*") && crList.second.equals("*") && crList.third.equals("*")) { return se; } } } //throw new Exception("null"); return null; } public HSSFWorkbook getXls(Long seqId) throws Exception { Sequence seq = sequenceDao.find(seqId); if (seq != null) { Logger log = Logger.getLogger(this.getClass()); try { HSSFWorkbook workbook = new HSSFWorkbook(); List<SequenceValueRange> svrList = seq.getSequenceValueRanges(); 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("? ?"); int n = 1; if (!svrList.isEmpty()) { for (SequenceValueRange vr : svrList) { //BaseParam bp = baseParamService.getBaseParam(vr.getUid().trim()); HSSFRow rowbody = sheet.createRow((short) n); rowbody.createCell(0).setCellValue(StringAdapter.getString(vr.getUid())); rowbody.createCell(1).setCellValue(StringAdapter.getString(vr.getAmin())); rowbody.createCell(2).setCellValue(StringAdapter.getString(vr.getValueMin())); rowbody.createCell(3).setCellValue(StringAdapter.getString(vr.getValueMax())); rowbody.createCell(4).setCellValue(StringAdapter.getString(vr.getAmax())); n++; } ; } return workbook; } catch (Exception e) { throw new Exception(e); } } else { throw new Exception("? . "); } //return null; } public void updateFromXml(File fl, Long seqId) throws Exception { try { Sequence seq = sequenceDao.find(seqId); if (seq != null) { FileInputStream fi = new FileInputStream(fl); int i = 0; int m = 1; try { List<SequenceValueRange> newSVrList = new ArrayList(); HSSFWorkbook workbook = new HSSFWorkbook(fi); HSSFSheet sheet = workbook.getSheetAt(0); Iterator<Row> it = sheet.iterator(); it.next(); while (it.hasNext()) { m++; Row row = it.next(); Cell uidc = row.getCell(0); String uid = ""; if (uidc != null) { uid = StringAdapter.HSSFSellValue(uidc).replace(" ", "").trim(); if (uid.contains(".")) { int point = uid.indexOf("."); uid = uid.substring(0, point); } } Cell aminCell = row.getCell(1); Long amin = null; 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(2); Long min = null; 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(3); Long max = null; 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(4); Long amax = null; 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); } } BaseParam bp = baseParamService.getBaseParam(uid); if (bp != null) { SequenceValueRange vr = new SequenceValueRange(); vr.setUid(uid); vr.setName(bp.getName()); vr.setAmin(amin); vr.setValueMin(min); vr.setValueMax(max); vr.setAmax(amax); vr.setSequence(seq); if (validate(vr, "??? , ? " + m + "; ")) { newSVrList.add(vr); } } } List<SequenceValueRange> oldSVrList = seq.getSequenceValueRanges(); for (SequenceValueRange vr : oldSVrList) { sequenceValueRangeService.delete(vr.getId()); } for (SequenceValueRange vr : newSVrList) { sequenceValueRangeService.create(vr); } workbook.close(); } catch (Exception e) { //addError(StringAdapter.getStackTraceException(e) + "str:"+i+"; "); throw new Exception(StringAdapter.getStackTraceException(e) + "str: " + m + "; "); } fi.close(); } } catch (Exception e) { //addError(" xml"); //addError(e.getMessage()); throw new Exception(StringAdapter.getStackTraceException(e)); } } }