package com.its.vms.config; import com.its.app.utils.NettyUtils; import com.its.app.utils.SysUtils; import com.its.vms.domain.VmsConstants; import lombok.Getter; import lombok.Setter; import lombok.ToString; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import javax.annotation.PostConstruct; import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; @Slf4j @Getter @Setter @ToString @Configuration @ConfigurationProperties(prefix = "application") public class ApplicationConfig { public static String FTP_FORM = "FORM"; public static String FTP_VIDEO = "VIDEO"; public static String FTP_STATIC = "STATIC"; public static String FTP_IMAGE = "IMAGE"; private String bootingDateTime; private boolean startSchedule; private String id = "VMS01"; private String name = "VMS Communication Server"; private boolean history = true; private boolean statistics = true; private String userId = "admin"; private String userPswd = "1234"; // Center Communication Config private boolean centerCommEnable = true; private int listenPort = 30200; protected String bindingAddr = "0.0.0.0"; protected int backlog = 0; protected int acceptThreads = 0; protected int workerThreads = 0; protected int rcvBuf = 0; protected int sndBuf = 0; protected int readerIdleTimeSeconds = 0; protected int writerIdleTimeSeconds = 0; protected int allIdleTimeSeconds = 0; protected int connectTimeoutSeconds = 0; private String ftpHomeDir = "./ftp"; private String ftpServerIp = ""; private int ftpServerPort = 9871; private int ftpPassiveMode = 0; private String ftpUserId = "vmsuser"; private String ftpUserPswd = "vmsuser#1234"; private String ftpFormDir ; // FTP Form Directory private String ftpVideoDir; // FTP Video Directory private String ftpStaticDir; // FTP 정적폼 Directory private String ftpImageDir; // FTP Image Directory private boolean loadDb = true; private boolean requestDeviceId = true; private int maxDownloadForms = 10; private int cngstContCount = 2; private int maxCngstForms = 5; private int bottomTrafficMax = 1; private int bottomTrafficCycle = 0; private boolean figureTrafficCenter = true; private boolean textTrafficCenter = true; private String figureTrafGrad1 = "원활"; private String figureTrafGrad2 = "지체"; private String figureTrafGrad3 = "정체"; private String textTrafGrad1 = "소통원활"; private String textTrafGrad2 = "지 체"; private String textTrafGrad3 = "정 체"; private boolean imageSeqSave = false; private float fontSizeRatio = 1.35f; private boolean checkNewForm = true; private boolean downloadBitmapForm = false; private boolean useParking = false; @PostConstruct private void init() { this.startSchedule = false; final int DEFAULT_EVENT_THREADS = Runtime.getRuntime().availableProcessors() * 2; if (this.bindingAddr.equals("")) { this.bindingAddr = "0.0.0.0"; } if (this.backlog == 0) { this.backlog = 32; } if (this.acceptThreads == 0) { this.acceptThreads = DEFAULT_EVENT_THREADS; } if (this.workerThreads == 0) { this.workerThreads = DEFAULT_EVENT_THREADS; } if (this.rcvBuf == 0) { this.rcvBuf = Short.MAX_VALUE / 2; } if (this.sndBuf == 0) { this.sndBuf = Short.MAX_VALUE / 2; } this.bootingDateTime = SysUtils.getSysTimeStr(); if (this.maxDownloadForms < VmsConstants.VMS_MIN_DOWNLOAD_FORMS) this.maxDownloadForms = VmsConstants.VMS_MIN_DOWNLOAD_FORMS; if (this.maxDownloadForms > VmsConstants.VMS_MAX_DOWNLOAD_FORMS) this.maxDownloadForms = VmsConstants.VMS_MAX_DOWNLOAD_FORMS; if (this.ftpHomeDir == null || this.ftpHomeDir.trim().length() == 0) { Path filePath = Paths.get(System.getProperty("user.dir"), "ftp"); this.ftpHomeDir = filePath.toFile().getAbsolutePath(); } this.ftpHomeDir = this.ftpHomeDir.trim(); this.ftpFormDir = this.ftpHomeDir + File.separator + FTP_FORM + File.separator; // FTP Form Directory this.ftpVideoDir = this.ftpHomeDir + File.separator + FTP_VIDEO + File.separator; // FTP Video Directory this.ftpStaticDir = this.ftpHomeDir + File.separator + FTP_STATIC + File.separator; // FTP 정적폼 Directory this.ftpImageDir = this.ftpHomeDir + File.separator + FTP_IMAGE + File.separator; // FTP Image Directory makeDirectory(this.ftpHomeDir, "ftp Home directory"); makeDirectory(this.ftpFormDir, "ftp Form directory"); makeDirectory(this.ftpVideoDir, "ftp Video directory"); makeDirectory(this.ftpStaticDir, "ftp Static Form directory"); makeDirectory(this.ftpImageDir, "ftp Image directory"); this.ftpServerIp = this.ftpServerIp.trim(); if (this.ftpServerIp.isEmpty()) { this.ftpServerIp = NettyUtils.getLocalAddress(); log.error("dddddddddddddddddddddddddddddddddd: {}", this.ftpServerIp); } if (this.fontSizeRatio == 0f) { this.fontSizeRatio = 1.35f; } log.info("{}", this); } public boolean makeDirectory(String path, String desc) { boolean result = false; File folder = new File(path); if (!folder.exists()) { try { result = folder.mkdir(); //폴더 생성합니다. log.info("{}, ({}) created.", folder.getAbsolutePath(), desc); } catch(Exception e) { log.error("{}, ({}) create failed. {}.", folder.getAbsolutePath(), desc, e.getMessage()); } } return result; } }