Jelajahi Sumber

Merge branch 'wrdp' into 'develop'

Wrdp

See merge request o2oa/o2oa!1900
o2null 5 tahun lalu
induk
melakukan
3880f25463

+ 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;
+	}
+
+}

+ 23 - 0
o2server/x_program_center/src/main/java/com/x/program/center/jaxrs/collect/ActionSyncArea.java

@@ -0,0 +1,23 @@
+package com.x.program.center.jaxrs.collect;
+
+import com.x.base.core.project.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.base.core.project.jaxrs.WrapBoolean;
+import com.x.program.center.ThisApplication;
+import com.x.program.center.schedule.Area;
+
+class ActionSyncArea extends BaseAction {
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		Wo wo = new Wo();
+		wo.setValue(true);
+		result.setData(wo);
+		ThisApplication.context().scheduleLocal(Area.class);
+		return result;
+	}
+
+	public static class Wo extends WrapBoolean {
+	}
+
+}

+ 17 - 0
o2server/x_program_center/src/main/java/com/x/program/center/jaxrs/collect/CollectAction.java

@@ -326,4 +326,21 @@ public class CollectAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "从collect 服务器同步area信息.", action = ActionSyncArea.class)
+	@GET
+	@Path("sync/area")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void syncArea(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request) {
+		ActionResult<ActionSyncArea.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionSyncArea().execute(effectivePerson);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 }

+ 2 - 0
o2server/x_program_center/src/main/java/com/x/program/center/schedule/Area.java

@@ -40,7 +40,9 @@ public class Area extends BaseAction {
 		try {
 			if (pirmaryCenter()) {
 				if (Config.collect().getEnable()) {
+					logger.print("start sync area from o2 cloud!");
 					area();
+					logger.print("completed sync area!");
 				}
 			}
 		} catch (Exception e) {

+ 12 - 8
o2web/source/x_component_Selector/IdentityWidthDuty.js

@@ -429,13 +429,17 @@ MWF.xApplication.Selector.IdentityWidthDuty.ItemUnitCategory = new Class({
     loadSub: function(callback){
         if (!this.loaded){
             this.selector.orgAction.listIdentityWithUnit(function(idJson){
-                idJson.data.each(function(idSubData){
-                    if( !this.selector.isExcluded( idSubData ) ) {
-                        var item = this.selector._newItem(idSubData, this.selector, this.children, this.level + 1, this);
-                        this.selector.items.push(item);
-                        if(this.subItems)this.subItems.push( item );
-                    }
-                }.bind(this));
+                if( !this.itemLoaded ){
+                    idJson.data.each(function(idSubData){
+                        if( !this.selector.isExcluded( idSubData ) ) {
+                            var item = this.selector._newItem(idSubData, this.selector, this.children, this.level + 1, this);
+                            this.selector.items.push(item);
+                            if(this.subItems)this.subItems.push( item );
+                        }
+                    }.bind(this));
+                    this.itemLoaded = true;
+                }
+
                 if( !this.selector.options.expandSubEnable ){
                     this.loaded = true;
                     if (callback) callback();
@@ -490,10 +494,10 @@ MWF.xApplication.Selector.IdentityWidthDuty.ItemUnitCategory = new Class({
                         this.selector.items.push(item);
                         if(this.subItems)this.subItems.push( item );
                     }
-                    this.itemLoaded = true;
                 }.bind(this));
                 if (callback) callback();
             }.bind(this), null, this.data.distinguishedName);
+            this.itemLoaded = true;
         }else{
             if (callback) callback( );
         }