WthrCommServerApplication.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package com.its.wthr;
  2. import com.its.app.AppUtils;
  3. import com.its.app.utils.OS;
  4. import com.its.app.utils.SysUtils;
  5. import com.its.wthr.config.ServerConfig;
  6. import com.its.wthr.process.DbmsJobProcess;
  7. import com.its.wthr.service.AtmpService;
  8. import com.its.wthr.service.FrcsService;
  9. import com.its.wthr.service.UnitSystService;
  10. import com.its.wthr.ui.JTextAreaOutputStream;
  11. import com.its.wthr.ui.MainUI;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.springframework.beans.factory.DisposableBean;
  14. import org.springframework.beans.factory.InitializingBean;
  15. import org.springframework.boot.Banner;
  16. import org.springframework.boot.CommandLineRunner;
  17. import org.springframework.boot.SpringApplication;
  18. import org.springframework.boot.autoconfigure.SpringBootApplication;
  19. import org.springframework.boot.builder.SpringApplicationBuilder;
  20. import org.springframework.boot.context.ApplicationPidFileWriter;
  21. import org.springframework.context.ApplicationContext;
  22. import org.springframework.context.ApplicationListener;
  23. import org.springframework.context.annotation.ComponentScan;
  24. import org.springframework.context.annotation.Configuration;
  25. import org.springframework.context.event.ContextClosedEvent;
  26. import org.springframework.core.io.ClassPathResource;
  27. import org.springframework.scheduling.annotation.EnableAsync;
  28. import javax.swing.*;
  29. import java.awt.*;
  30. import java.awt.event.WindowAdapter;
  31. import java.awt.event.WindowEvent;
  32. import java.io.File;
  33. import java.io.IOException;
  34. import java.io.PrintStream;
  35. import java.net.URL;
  36. import java.text.SimpleDateFormat;
  37. @Slf4j
  38. @EnableAsync
  39. @Configuration
  40. @SpringBootApplication
  41. @ComponentScan(basePackages = {"com.its.wthr.config", "com.its.wthr.mapper", "com.its"})
  42. public class WthrCommServerApplication implements CommandLineRunner, ApplicationListener<ContextClosedEvent>, InitializingBean, DisposableBean {
  43. //public class WthrCommServerApplication implements CommandLineRunner, ApplicationListener<ContextClosedEvent>, InitializingBean, DisposableBean {
  44. private static final String applicationName = "wthr-comm-server";
  45. public static void main(String[] args) {
  46. File file1 = new File("./conf/" + applicationName + ".pid");
  47. if (file1.exists()) {
  48. System.out.println(System.getProperty("Program Already Running....."));
  49. log.error("Program Already Running.....");
  50. }
  51. if (OS.isWindows()) {
  52. ApplicationContext context = new SpringApplicationBuilder(WthrCommServerApplication.class)
  53. //.web(WebApplicationType.NONE)
  54. .listeners(new ApplicationPidFileWriter("./conf/" + applicationName + ".pid"))
  55. .headless(false)
  56. .bannerMode(Banner.Mode.OFF)
  57. .run(args);
  58. } else {
  59. SpringApplication application = new SpringApplicationBuilder()
  60. .sources(WthrCommServerApplication.class)
  61. .listeners(new ApplicationPidFileWriter("./conf/" + applicationName + ".pid"))
  62. .build();
  63. application.setBannerMode(Banner.Mode.OFF);
  64. application.run(args);
  65. }
  66. }
  67. @Override
  68. public void run(String... args) throws Exception {
  69. ServerConfig serverConfig = (ServerConfig) AppUtils.getBean(ServerConfig.class);
  70. log.info("");
  71. log.info("");
  72. log.info("************************************************************************************");
  73. log.info("** **");
  74. log.info("** Intelligent Traffic System **");
  75. log.info("** Weather(Open API) Communication Server. **");
  76. log.info("** **");
  77. log.info("** [ver.1.0] **");
  78. log.info("** {}", serverConfig.getProcessId());
  79. log.info("** startup: {}", serverConfig.getBootingDateTime());
  80. log.info("************************************************************************************");
  81. // init application
  82. DbmsJobProcess dbmsJobProcess = (DbmsJobProcess)AppUtils.getBean(DbmsJobProcess.class);
  83. dbmsJobProcess.run();
  84. UnitSystService unitSystService = (UnitSystService)AppUtils.getBean(UnitSystService.class);
  85. unitSystService.loadMaster();
  86. unitSystService.updateUnitSyst(true);
  87. AtmpService atmpService = (AtmpService)AppUtils.getBean(AtmpService.class);
  88. atmpService.doJob();
  89. FrcsService frcsService = (FrcsService)AppUtils.getBean(FrcsService.class);
  90. frcsService.doJob();
  91. // schedule enable
  92. serverConfig.setStartSchedule(true);
  93. if (OS.isWindows()) {
  94. SwingUtilities.invokeLater(() -> {
  95. String sysTime = SysUtils.getSysTimeStr();
  96. //JFrame.setDefaultLookAndFeelDecorated(true);
  97. JFrame frame = new JFrame("기상정보 연계 서버 - [" + sysTime + "]");
  98. MainUI UI = new MainUI(frame);
  99. try {
  100. ClassPathResource file = new ClassPathResource("static/image/application.png");
  101. URL imgURL = file.getURL();
  102. frame.setIconImage(new ImageIcon(imgURL).getImage());
  103. } catch (IOException e) {
  104. log.error("Not found application icon image");
  105. }
  106. frame.setModalExclusionType(Dialog.ModalExclusionType.APPLICATION_EXCLUDE);
  107. frame.setContentPane(UI.getRootPanel());
  108. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  109. frame.addWindowListener(new WindowAdapter() {
  110. @Override
  111. public void windowClosing(WindowEvent e) {
  112. if (JOptionPane.showConfirmDialog(UI.getRootPanel(), "시스템을 종료 하시겠습니까?", "시스템 종료", 0) == 0) {
  113. System.exit(0);
  114. } else {
  115. frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
  116. }
  117. }
  118. });
  119. frame.pack();
  120. frame.setBounds(100, 100, 900, 700);
  121. frame.setLocationRelativeTo(null);
  122. frame.setVisible(true);
  123. JTextArea logArea = UI.getTaLog();
  124. logArea.setText(null);
  125. JTextAreaOutputStream out = new JTextAreaOutputStream(logArea);
  126. System.setOut(new PrintStream(out));
  127. UI.LoadControllerInfo();
  128. });
  129. }
  130. }
  131. public void terminateApplication() {
  132. SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  133. UnitSystService unitSystService = (UnitSystService) AppUtils.getBean(UnitSystService.class);
  134. unitSystService.updateUnitSyst(false);
  135. }
  136. @Override
  137. public void onApplicationEvent(ContextClosedEvent event) {
  138. log.error("Application Terminated: {}", event.getTimestamp());
  139. terminateApplication();
  140. }
  141. @Override
  142. public void afterPropertiesSet() throws Exception {
  143. }
  144. @Override
  145. public void destroy() throws Exception {
  146. }
  147. }