zhourui 5 жил өмнө
parent
commit
2417208742

+ 49 - 67
o2server/x_console/src/main/java/com/x/server/console/action/Ddl.java

@@ -3,13 +3,6 @@ package com.x.server.console.action;
 import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Objects;
-
-import com.x.base.core.container.factory.PersistenceXmlHelper;
-import com.x.base.core.project.config.Config;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.base.core.project.tools.ListTools;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
@@ -19,6 +12,12 @@ import org.apache.openjpa.persistence.EntityManagerImpl;
 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
 import org.apache.openjpa.persistence.OpenJPAPersistence;
 
+import com.x.base.core.container.factory.PersistenceXmlHelper;
+import com.x.base.core.project.config.Config;
+import com.x.base.core.project.logger.Logger;
+import com.x.base.core.project.logger.LoggerFactory;
+import com.x.base.core.project.tools.ClassLoaderTools;
+
 public class Ddl {
 
 	private static Logger logger = LoggerFactory.getLogger(Ddl.class);
@@ -26,66 +25,49 @@ public class Ddl {
 	/* 初始化完成 */
 	public boolean execute(String type) throws Exception {
 
-		// List<String> containerEntityNames = new ArrayList<>();
-		// containerEntityNames.addAll((List<String>)
-		// Config.resource(Config.RESOURCE_CONTAINERENTITYNAMES));
-		// List<String> classNames =
-		// ListTools.includesExcludesWildcard(containerEntityNames,
-		// Config.dumpRestoreData().getIncludes(),
-		// Config.dumpRestoreData().getExcludes());
-		// File persistence = new File(Config.dir_local_temp_classes(),
-		// "META-INF/persistence.xml");
-		// PersistenceXmlHelper.writeForDdl(persistence.getAbsolutePath());
-		// String[] arguments = new String[4];
-		// arguments[0] = "-schemaAction";
-		// arguments[1] = StringUtils.equals(type ,"create")? "build":"add";
-		// arguments[2] = "-sql";
-		// arguments[3] = Config.dir_local_temp_sql(true) + "/" + type + ".sql";
-		// MappingTool.main(arguments);
-		// return true;
-		String flag = "build";
-		if (StringUtils.equalsIgnoreCase(type, "createDB")) {
-			flag = "createDB";
-		} else if (StringUtils.equalsIgnoreCase(type, "dropDB")) {
-			flag = "dropDB";
-		} else if (StringUtils.equalsIgnoreCase(type, "drop")) {
-			flag = "drop";
-			// } else if (StringUtils.equalsIgnoreCase(type, "deleteTableContents")) {
-			// flag = "deleteTableContents";
-		}
-		List<String> containerEntityNames = new ArrayList<>();
-		containerEntityNames.addAll((List<String>) Config.resource(Config.RESOURCE_CONTAINERENTITYNAMES));
-		List<String> classNames = ListTools.includesExcludesWildcard(containerEntityNames,
-				Config.dumpRestoreData().getIncludes(), Config.dumpRestoreData().getExcludes());
-		File persistence = new File(Config.dir_local_temp_classes(), "persistence_sql.xml");
-		PersistenceXmlHelper.writeForDdl(persistence.getAbsolutePath());
-		OpenJPAEntityManagerFactory emf = OpenJPAPersistence.createEntityManagerFactory("enhance",
-				persistence.getName());
-		EntityManagerImpl em = (EntityManagerImpl) emf.createEntityManager();
-		String[] arguments = null;
-		String[] args = null;
-		Options opts = new Options();
-		if (StringUtils.equals(flag, "build") || StringUtils.equals(flag, "drop")
-				|| StringUtils.equals(flag, "createDB") || StringUtils.equals(flag, "dropDB")) {
-			arguments = new String[4];
-			File file = new File(Config.dir_local_temp_sql(true), flag + ".sql");
-			arguments[0] = "-schemaAction";
-			arguments[1] = flag;
-			arguments[2] = "-sql";
-			arguments[3] = file.getAbsolutePath();
-			args = opts.setFromCmdLine(arguments);
-			MappingTool.run((JDBCConfiguration) em.getConfiguration(), args, opts, null);
-			logger.print("file : {}.", file.getAbsolutePath());
-		} else if (StringUtils.equals(flag, "deleteTableContents")) {
-			// arguments = new String[2];
-			// arguments[0] = "-schemaAction";
-			// arguments[1] = flag;
-			// args = opts.setFromCmdLine(arguments);
-			// MappingTool.run((JDBCConfiguration) em.getConfiguration(), args, opts, null);
-			// logger.print("delete all table contents.");
-		}
-		em.close();
-		emf.close();
+		new Thread(() -> {
+			try {
+				ClassLoader cl = ClassLoaderTools.urlClassLoader(true, true, true, true, true,
+						Config.dir_local_temp_classes().toPath());
+				Thread.currentThread().setContextClassLoader(cl);
+				String flag = "build";
+				if (StringUtils.equalsIgnoreCase(type, "createDB")) {
+					flag = "createDB";
+				} else if (StringUtils.equalsIgnoreCase(type, "dropDB")) {
+					flag = "dropDB";
+				} else if (StringUtils.equalsIgnoreCase(type, "drop")) {
+					flag = "drop";
+				}
+				List<String> containerEntityNames = new ArrayList<>();
+				containerEntityNames.addAll((List<String>) Config.resource(Config.RESOURCE_CONTAINERENTITYNAMES));
+				File persistence = new File(Config.dir_local_temp_classes(), "META-INF/persistence_sql.xml");
+				PersistenceXmlHelper.writeForDdl(persistence.getAbsolutePath());
+				OpenJPAEntityManagerFactory emf = OpenJPAPersistence.createEntityManagerFactory("enhance",
+						persistence.getName());
+				EntityManagerImpl em = (EntityManagerImpl) emf.createEntityManager();
+				String[] arguments = null;
+				String[] args = null;
+				Options opts = new Options();
+				if (StringUtils.equals(flag, "build") || StringUtils.equals(flag, "drop")
+						|| StringUtils.equals(flag, "createDB") || StringUtils.equals(flag, "dropDB")) {
+					arguments = new String[4];
+					File file = new File(Config.dir_local_temp_sql(true), flag + ".sql");
+					arguments[0] = "-schemaAction";
+					arguments[1] = flag;
+					arguments[2] = "-sql";
+					arguments[3] = file.getAbsolutePath();
+					args = opts.setFromCmdLine(arguments);
+					MappingTool.run((JDBCConfiguration) em.getConfiguration(), args, opts, null);
+					logger.print("file : {}.", file.getAbsolutePath());
+				} else if (StringUtils.equals(flag, "deleteTableContents")) {
+				}
+				em.close();
+				emf.close();
+
+			} catch (Exception e) {
+				logger.error(e);
+			}
+		}).start();
 		return true;
 	}
 

+ 93 - 0
o2server/x_console/src/main/java/com/x/server/console/action/Ddl2.java

@@ -0,0 +1,93 @@
+package com.x.server.console.action;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+import com.x.base.core.container.factory.PersistenceXmlHelper;
+import com.x.base.core.project.config.Config;
+import com.x.base.core.project.logger.Logger;
+import com.x.base.core.project.logger.LoggerFactory;
+import com.x.base.core.project.tools.ListTools;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
+import org.apache.openjpa.jdbc.meta.MappingTool;
+import org.apache.openjpa.lib.util.Options;
+import org.apache.openjpa.persistence.EntityManagerImpl;
+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
+import org.apache.openjpa.persistence.OpenJPAPersistence;
+
+public class Ddl2 {
+
+	private static Logger logger = LoggerFactory.getLogger(Ddl2.class);
+
+	/* 初始化完成 */
+	public boolean execute(String type) throws Exception {
+
+		// List<String> containerEntityNames = new ArrayList<>();
+		// containerEntityNames.addAll((List<String>)
+		// Config.resource(Config.RESOURCE_CONTAINERENTITYNAMES));
+		// List<String> classNames =
+		// ListTools.includesExcludesWildcard(containerEntityNames,
+		// Config.dumpRestoreData().getIncludes(),
+		// Config.dumpRestoreData().getExcludes());
+		// File persistence = new File(Config.dir_local_temp_classes(),
+		// "META-INF/persistence.xml");
+		// PersistenceXmlHelper.writeForDdl(persistence.getAbsolutePath());
+		// String[] arguments = new String[4];
+		// arguments[0] = "-schemaAction";
+		// arguments[1] = StringUtils.equals(type ,"create")? "build":"add";
+		// arguments[2] = "-sql";
+		// arguments[3] = Config.dir_local_temp_sql(true) + "/" + type + ".sql";
+		// MappingTool.main(arguments);
+		// return true;
+		String flag = "build";
+		if (StringUtils.equalsIgnoreCase(type, "createDB")) {
+			flag = "createDB";
+		} else if (StringUtils.equalsIgnoreCase(type, "dropDB")) {
+			flag = "dropDB";
+		} else if (StringUtils.equalsIgnoreCase(type, "drop")) {
+			flag = "drop";
+			// } else if (StringUtils.equalsIgnoreCase(type, "deleteTableContents")) {
+			// flag = "deleteTableContents";
+		}
+		List<String> containerEntityNames = new ArrayList<>();
+		containerEntityNames.addAll((List<String>) Config.resource(Config.RESOURCE_CONTAINERENTITYNAMES));
+		List<String> classNames = ListTools.includesExcludesWildcard(containerEntityNames,
+				Config.dumpRestoreData().getIncludes(), Config.dumpRestoreData().getExcludes());
+		File persistence = new File(Config.dir_local_temp_classes(), "persistence_sql.xml");
+		PersistenceXmlHelper.writeForDdl(persistence.getAbsolutePath());
+		OpenJPAEntityManagerFactory emf = OpenJPAPersistence.createEntityManagerFactory("enhance",
+				persistence.getName());
+		System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!" + emf);
+		EntityManagerImpl em = (EntityManagerImpl) emf.createEntityManager();
+		String[] arguments = null;
+		String[] args = null;
+		Options opts = new Options();
+		if (StringUtils.equals(flag, "build") || StringUtils.equals(flag, "drop")
+				|| StringUtils.equals(flag, "createDB") || StringUtils.equals(flag, "dropDB")) {
+			arguments = new String[4];
+			File file = new File(Config.dir_local_temp_sql(true), flag + ".sql");
+			arguments[0] = "-schemaAction";
+			arguments[1] = flag;
+			arguments[2] = "-sql";
+			arguments[3] = file.getAbsolutePath();
+			args = opts.setFromCmdLine(arguments);
+			MappingTool.run((JDBCConfiguration) em.getConfiguration(), args, opts, null);
+			logger.print("file : {}.", file.getAbsolutePath());
+		} else if (StringUtils.equals(flag, "deleteTableContents")) {
+			// arguments = new String[2];
+			// arguments[0] = "-schemaAction";
+			// arguments[1] = flag;
+			// args = opts.setFromCmdLine(arguments);
+			// MappingTool.run((JDBCConfiguration) em.getConfiguration(), args, opts, null);
+			// logger.print("delete all table contents.");
+		}
+		em.close();
+		emf.close();
+		return true;
+	}
+
+}