ソースを参照

增加程序管理器免配置功能

郭志波 6 年 前
コミット
1b2fb44645

+ 16 - 3
src/main/java/com/leanwo/management/MainFrame.java

@@ -14,6 +14,7 @@ import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseEvent;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.awt.event.WindowEvent;
+import java.io.File;
 import java.io.IOException;
 import java.io.IOException;
 import java.net.URL;
 import java.net.URL;
 import java.util.List;
 import java.util.List;
@@ -28,11 +29,13 @@ import javax.swing.JToolBar;
 
 
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
-
+import org.springframework.beans.factory.annotation.Value;
 import com.leanwo.management.model.ApplicationSetting;
 import com.leanwo.management.model.ApplicationSetting;
 import com.leanwo.management.model.ApplicationSettingCache;
 import com.leanwo.management.model.ApplicationSettingCache;
 import com.leanwo.management.service.ProcessService;
 import com.leanwo.management.service.ProcessService;
 import com.leanwo.management.service.ProgramRunResult;
 import com.leanwo.management.service.ProgramRunResult;
+import com.leanwo.management.util.AppConfig;
+import com.leanwo.management.util.FileUtil;
 import com.leanwo.management.util.SpringUtil;
 import com.leanwo.management.util.SpringUtil;
 import com.leanwo.management.widget.SelectEventListener;
 import com.leanwo.management.widget.SelectEventListener;
 import com.leanwo.management.widget.SelectObject;
 import com.leanwo.management.widget.SelectObject;
@@ -76,8 +79,18 @@ public class MainFrame extends JFrame{
 	}
 	}
 	
 	
 	private void initData() {
 	private void initData() {
-		applicationSettingCache = (ApplicationSettingCache) SpringUtil.getSingleBean(ApplicationSettingCache.class);
-		settings = applicationSettingCache.getSettings();
+		AppConfig appConfig = (AppConfig)SpringUtil.getSingleBean(AppConfig.class);
+		Boolean auto = appConfig.getAutoConfig();
+		if(auto) {
+			FileUtil fileUtil = new FileUtil();
+			applicationSettingCache = new ApplicationSettingCache();
+			settings = fileUtil.getFile();
+			applicationSettingCache.setSettings(settings);
+		}else {
+			applicationSettingCache = (ApplicationSettingCache) SpringUtil.getSingleBean(ApplicationSettingCache.class);
+			settings = applicationSettingCache.getSettings();
+		}
+		
 		processService = (ProcessService) SpringUtil.getSingleBean(ProcessService.class);
 		processService = (ProcessService) SpringUtil.getSingleBean(ProcessService.class);
 		Thread.currentThread().setName("界面主线程");
 		Thread.currentThread().setName("界面主线程");
 	}
 	}

+ 10 - 9
src/main/java/com/leanwo/management/ServerLogFrame.java

@@ -55,15 +55,16 @@ public class ServerLogFrame extends JPanel{
 	
 	
 	private void initView() {
 	private void initView() {
 		tabbedpane = new JTabbedPane();
 		tabbedpane = new JTabbedPane();
-		
-		for(int i = 0; i < tabNames.length; i ++) {
-			JPanel panel = new JPanel();
-			tabbedpane.addTab(tabNames[i],  panel);
-			
-			LogConsole logConsole = new LogConsole(tabNames[i]);
-			panel.setLayout(new GridLayout(1, 1));
-			panel.add(logConsole);
-			logConsoleMap.put(i, logConsole);
+		if(tabNames != null && tabNames.length > 0) {
+			for(int i = 0; i < tabNames.length; i ++) {
+				JPanel panel = new JPanel();
+				tabbedpane.addTab(tabNames[i],  panel);
+				
+				LogConsole logConsole = new LogConsole(tabNames[i]);
+				panel.setLayout(new GridLayout(1, 1));
+				panel.add(logConsole);
+				logConsoleMap.put(i, logConsole);
+			}
 		}
 		}
 		
 		
 		setLayout(new GridLayout(1, 1));
 		setLayout(new GridLayout(1, 1));

+ 2 - 1
src/main/java/com/leanwo/management/ServerManagementApp.java

@@ -8,6 +8,7 @@ import javax.swing.SwingUtilities;
 
 
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
 import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@@ -22,7 +23,7 @@ import com.leanwo.management.util.ProgramStopUtil;
 public class ServerManagementApp {
 public class ServerManagementApp {
 
 
 	private static Logger logger = LoggerFactory.getLogger(ServerManagementApp.class);
 	private static Logger logger = LoggerFactory.getLogger(ServerManagementApp.class);
-
+	
 	public static void main(String[] args) {
 	public static void main(String[] args) {
 		System.setProperty("java.awt.headless", "false");
 		System.setProperty("java.awt.headless", "false");
 		
 		

+ 37 - 0
src/main/java/com/leanwo/management/util/AppConfig.java

@@ -0,0 +1,37 @@
+package com.leanwo.management.util;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * AppConfig配置.
+ *
+ * @author GuoZhiBo
+ */
+@Configuration
+public class AppConfig {
+
+    /** 是否免配置. */
+    @Value("${server.autoConfig}")
+    private Boolean autoConfig;
+
+	/**
+	 * Gets the 是否免配置.
+	 *
+	 * @return the 是否免配置
+	 */
+	public Boolean getAutoConfig() {
+		return autoConfig;
+	}
+
+	/**
+	 * Sets the 是否免配置.
+	 *
+	 * @param autoConfig the new 是否免配置
+	 */
+	public void setAutoConfig(Boolean autoConfig) {
+		this.autoConfig = autoConfig;
+	}
+
+
+}

+ 66 - 0
src/main/java/com/leanwo/management/util/FileUtil.java

@@ -0,0 +1,66 @@
+package com.leanwo.management.util;
+
+import java.io.Closeable;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.leanwo.management.model.ApplicationSetting;
+
+/**
+ * 获取程序上级文件夹下的所有文件下的stop.bat和run.bat
+ * @author GuoZhiBo
+ *
+ */
+public class FileUtil {
+	private final static Logger logger = LoggerFactory.getLogger(FileUtil.class);
+
+	/**
+	 * 获取文件stop.bat和run.bat
+	 * @param closeables
+	 */
+	public List<ApplicationSetting> getFile() {
+		List<ApplicationSetting> settings = new ArrayList<>();
+		File directory = new File(""); 
+		String path = directory.getAbsolutePath();
+		File parentPath = new File(path).getParentFile();
+		 // 取 文件/文件夹
+        File files[] = parentPath.listFiles();
+        
+        // 对象为空 直接返回
+        if(files == null){
+            return settings;
+        }
+        // 存在文件 遍历 判断
+        for (File f : files) {
+            // 判断是否为 文件夹
+            if(f.isDirectory()){
+            	ApplicationSetting applicationSetting = new ApplicationSetting();
+               String filePath = f.getAbsolutePath(); 
+               if(path.equals(filePath)) {
+            	   continue;
+               }
+               File runFile = new File(filePath + "\\run.bat"); 
+               if(!runFile.exists()) {
+            	   continue;
+               }
+               File stopFile = new File(filePath + "\\stop.bat"); 
+               if(!stopFile.exists()) {
+            	   continue;
+               }
+               applicationSetting.setName(f.getName());
+               applicationSetting.setInstallPath(filePath);
+               applicationSetting.setStartBatFile("run.bat");
+               applicationSetting.setStopBatFile("stop.bat");
+               settings.add(applicationSetting);
+            } 
+            
+        }   
+        return settings;
+	}
+	
+}

+ 34 - 3
src/main/java/com/leanwo/management/util/SpringUtil.java

@@ -5,16 +5,28 @@ import java.util.Map;
 
 
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.context.ApplicationContextAware;
 
 
 import com.leanwo.management.exception.BeanNotInjectException;
 import com.leanwo.management.exception.BeanNotInjectException;
 
 
 
 
+// TODO: Auto-generated Javadoc
+/**
+ * The Class SpringUtil.
+ */
 public class SpringUtil implements ApplicationContextAware {
 public class SpringUtil implements ApplicationContextAware {
+	
+	/** The logger. */
 	private static Logger logger = LoggerFactory.getLogger(SpringUtil.class);
 	private static Logger logger = LoggerFactory.getLogger(SpringUtil.class);
+	
+	/** The application context. */
 	private static ApplicationContext applicationContext;
 	private static ApplicationContext applicationContext;
 
 
+	/* (non-Javadoc)
+	 * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
+	 */
 	@Override
 	@Override
 	public void setApplicationContext(ApplicationContext arg0) {
 	public void setApplicationContext(ApplicationContext arg0) {
 		applicationContext = arg0;
 		applicationContext = arg0;
@@ -23,6 +35,11 @@ public class SpringUtil implements ApplicationContextAware {
 		logger.info("Spring容器初始化成功。");
 		logger.info("Spring容器初始化成功。");
 	}
 	}
 
 
+	/**
+	 * Gets the application context.
+	 *
+	 * @return the application context
+	 */
 	public static ApplicationContext getApplicationContext() {
 	public static ApplicationContext getApplicationContext() {
 		checkApplicationContext();
 		checkApplicationContext();
 		return applicationContext;
 		return applicationContext;
@@ -30,6 +47,10 @@ public class SpringUtil implements ApplicationContextAware {
 
 
 	/**
 	/**
 	 * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
 	 * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
+	 *
+	 * @param <T> the generic type
+	 * @param name the name
+	 * @return the bean
 	 */
 	 */
 	@SuppressWarnings("unchecked")
 	@SuppressWarnings("unchecked")
 	public static <T> T getBean(String name) {
 	public static <T> T getBean(String name) {
@@ -39,6 +60,10 @@ public class SpringUtil implements ApplicationContextAware {
 
 
 	/**
 	/**
 	 * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
 	 * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
+	 *
+	 * @param <T> the generic type
+	 * @param clazz the clazz
+	 * @return the bean
 	 */
 	 */
 	public static <T> T getBean(Class<T> clazz) {
 	public static <T> T getBean(Class<T> clazz) {
 		checkApplicationContext();
 		checkApplicationContext();
@@ -47,6 +72,9 @@ public class SpringUtil implements ApplicationContextAware {
 
 
 	/**
 	/**
 	 * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
 	 * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
+	 *
+	 * @param clazz the clazz
+	 * @return the single bean
 	 */
 	 */
 	public static Object getSingleBean(Class clazz) {
 	public static Object getSingleBean(Class clazz) {
 		checkApplicationContext();
 		checkApplicationContext();
@@ -63,9 +91,9 @@ public class SpringUtil implements ApplicationContextAware {
 	}
 	}
 
 
 	/**
 	/**
-	 * 获取当前IOC所有Bean的名称
-	 * 
-	 * @return
+	 * 获取当前IOC所有Bean的名称.
+	 *
+	 * @return the string[]
 	 */
 	 */
 	public static String[] beanNames() {
 	public static String[] beanNames() {
 		checkApplicationContext();
 		checkApplicationContext();
@@ -73,6 +101,9 @@ public class SpringUtil implements ApplicationContextAware {
 
 
 	}
 	}
 
 
+	/**
+	 * Check application context.
+	 */
 	private static void checkApplicationContext() {
 	private static void checkApplicationContext() {
 		if (applicationContext == null) {
 		if (applicationContext == null) {
 			throw new IllegalStateException("applicaitonContext未注入,请在applicationContext.xml中定义SpringContextHolder");
 			throw new IllegalStateException("applicaitonContext未注入,请在applicationContext.xml中定义SpringContextHolder");

+ 2 - 0
src/main/resources/Application.yml

@@ -1,6 +1,8 @@
 #eureka的端口号
 #eureka的端口号
 server:
 server:
   port: 88
   port: 88
+#是否免配置
+  autoConfig: false
 spring:
 spring:
   application:
   application:
     # 应用名称,会在Eureka中作为服务的id标识(serviceId)
     # 应用名称,会在Eureka中作为服务的id标识(serviceId)