Parcourir la source

修改默认资源文件

roo00 il y a 7 ans
Parent
commit
b8b7551b06

+ 5 - 0
o2server/.gitignore

@@ -1,7 +1,9 @@
 .project
 /.settings/
 /local/
+/localSample/
 /config/
+/configSample/
 /logs/
 /target/
 /x_build_and_scratch/
@@ -11,4 +13,7 @@ command.swap
 /node_modules/
 package-lock.json
 **/src/main/resources/META-INF/persistence.xml
+**/src/main/resources/META-INF/x_persistence.xml
 **/*_.java
+**/src/main/webapp/describe/
+console.jar

+ 38 - 0
o2server/package.xml → o2server/build.xml

@@ -1,9 +1,47 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project basedir="." name="main" default="default">
 	<basename property="project" file="${basedir}" />
+	<path id="project.classpath">
+		<fileset dir="${basedir}/commons/ext">
+			<include name="*.jar" />
+		</fileset>
+		<fileset dir="${basedir}/store/jars">
+			<include name="*.jar" />
+		</fileset>
+	</path>
 	<tstamp>
 		<format property="VERSION" pattern="yyyyMMddHHmmss" locale="zh-cn" />
 	</tstamp>
+
+	<target name="createConfigSample">
+		<delete dir="${basedir}/configSample" />
+		<mkdir dir="${basedir}/configSample" />
+		<java classname="com.x.base.core.project.build.CreateConfigSample" fork="true">
+			<sysproperty key="file.encoding" value="utf-8" />
+			<classpath refid="project.classpath" />
+			<arg value="${basedir}" />
+		</java>
+	</target>
+
+	<target name="createLocalSample">
+		<delete dir="${basedir}/localSample" />
+		<mkdir dir="${basedir}/localSample" />
+		<java classname="com.x.base.core.project.build.CreateLocalSample" fork="true">
+			<sysproperty key="file.encoding" value="utf-8" />
+			<classpath refid="project.classpath" />
+			<arg value="${basedir}" />
+		</java>
+	</target>
+
+	<target name="createManifestCfg">
+		<java classname="com.x.base.core.project.build.CreateManifestCfg" fork="true">
+			<sysproperty key="file.encoding" value="utf-8" />
+			<classpath refid="project.classpath" />
+			<arg value="${basedir}" />
+		</java>
+	</target>
+
+
 	<target name="default">
 		<delete dir="target" />
 		<mkdir dir="target/o2server" />

+ 114 - 0
o2server/build_common.xml

@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+	<basename property="project" file="${basedir}" />
+	<dirname property="o2server.dir" file="./" />
+	<path id="project.classpath">
+		<fileset dir="${o2server.dir}/commons/ext">
+			<include name="*.jar" />
+		</fileset>
+		<fileset dir="${o2server.dir}/store/jars">
+			<include name="*.jar" />
+		</fileset>
+		<pathelement location="${basedir}/target/classes" />
+	</path>
+
+	<taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask">
+		<classpath refid="project.classpath" />
+	</taskdef>
+	<!--
+	<taskdef name="if-contrib" classname="net.sf.antcontrib.logic.IfTask">
+		<classpath refid="project.classpath" />
+	</taskdef>
+	<taskdef name="for-contrib" classname="net.sf.antcontrib.logic.ForTask">
+		<classpath refid="project.classpath" />
+	</taskdef>
+	<taskdef name="var-contrib" classname="net.sf.antcontrib.property.Variable">
+		<classpath refid="project.classpath" />
+	</taskdef>
+-->
+	<target name="metamodel">
+		<delete>
+			<fileset dir="${basedir}/src/main/java" includes="**/entity/**/*_.java" />
+		</delete>
+		<javac srcdir="${basedir}/src/main/java" destdir="${basedir}/src/main/java" includes="**/entity/**,**/entity" debug="true" debuglevel="source,lines,vars" includeantruntime="true" encoding="utf-8" target="1.8" source="1.8" fork="true">
+			<classpath refid="project.classpath">
+			</classpath>
+			<compilerarg value="-Aopenjpa.metamodel=true" />
+			<compilerarg value="-Aopenjpa.log=TRACE" />
+		</javac>
+		<delete>
+			<fileset dir="${basedir}/src/main/java" includes="**/*.class" />
+		</delete>
+		<echo message="metamodel complete." />
+	</target>
+
+	<target name="createPersistenceXml">
+		<java classname="com.x.base.core.entity.tools.PersistenceXmlWriter" fork="true">
+			<sysproperty key="file.encoding" value="utf-8" />
+			<classpath>
+				<pathelement path="${basedir}/target/classes" />
+				<pathelement path="${basedir}/src/main/java" />
+				<fileset dir="${o2server.dir}/commons/ext">
+					<include name="*.jar" />
+				</fileset>
+				<fileset dir="${o2server.dir}/store/jars">
+					<include name="*.jar" />
+				</fileset>
+			</classpath>
+			<arg value="{
+				project:'${project}',
+				path:'${basedir}/src/main/resources/META-INF/x_persistence.xml'
+			}" />
+		</java>
+	</target>
+
+	<target name="describe">
+		<mkdir dir="${basedir}/src/main/webapp/describe" />
+		<delete includeemptydirs="true">
+			<fileset dir="${basedir}/src/main/webapp/describe" includes="**/*" />
+		</delete>
+		<java classname="com.x.base.core.project.annotation.Describe" fork="true">
+			<sysproperty key="file.encoding" value="utf-8" />
+			<arg value="${basedir}/src/main/webapp/describe" />
+			<arg value="${project}" />
+			<classpath>
+				<pathelement location="${basedir}/target/classes" />
+				<pathelement location="${basedir}/src/main/resources" />
+				<fileset dir="${o2server.dir}/commons/ext">
+					<include name="*.jar" />
+				</fileset>
+				<fileset dir="${o2server.dir}/store/jars">
+					<include name="*.jar" />
+				</fileset>
+			</classpath>
+		</java>
+		<copy todir="${basedir}/src/main/webapp/describe/sources">
+			<fileset dir="${basedir}/src/main/java">
+				<include name="**/*.java" />
+			</fileset>
+		</copy>
+	</target>
+
+	<target name="createEnhancePersistenceXml">
+		<mkdir dir="${basedir}/src/main/resources/META-INF" />
+		<java classname="com.x.base.core.entity.tools.EnhancePersistenceXmlWriter" fork="true">
+			<sysproperty key="file.encoding" value="utf-8" />
+			<classpath>
+				<pathelement path="${basedir}/target/classes" />
+				<pathelement path="${basedir}/src/main/java" />
+				<pathelement path="${basedir}/src/main/resources" />
+				<fileset dir="${o2server.dir}/commons/ext">
+					<include name="*.jar" />
+				</fileset>
+				<fileset dir="${o2server.dir}/store/jars">
+					<include name="x_base_core_project.jar" />
+					<exclude name="${project}.jar" />
+				</fileset>
+			</classpath>
+			<arg value="{
+					path:'${basedir}/src/main/resources/META-INF/persistence.xml'
+				}" />
+		</java>
+	</target>
+
+</project>

BIN
o2server/console.jar


+ 145 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/build/CreateConfigSample.java

@@ -0,0 +1,145 @@
+package com.x.base.core.project.build;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.lang.reflect.ParameterizedType;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.reflect.FieldUtils;
+import org.apache.commons.lang3.reflect.MethodUtils;
+
+import com.google.gson.JsonElement;
+import com.x.base.core.project.Packages;
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.config.AppStyle;
+import com.x.base.core.project.config.CenterServer;
+import com.x.base.core.project.config.Collect;
+import com.x.base.core.project.config.ConfigObject;
+import com.x.base.core.project.config.Dingding;
+import com.x.base.core.project.config.DumpRestoreData;
+import com.x.base.core.project.config.DumpRestoreStorage;
+import com.x.base.core.project.config.ExternalDataSource;
+import com.x.base.core.project.config.LogLevel;
+import com.x.base.core.project.config.Meeting;
+import com.x.base.core.project.config.Messages;
+import com.x.base.core.project.config.Node;
+import com.x.base.core.project.config.Person;
+import com.x.base.core.project.config.ProcessPlatform;
+import com.x.base.core.project.config.Qiyeweixin;
+import com.x.base.core.project.config.Query;
+import com.x.base.core.project.config.Token;
+import com.x.base.core.project.config.Vfs;
+import com.x.base.core.project.config.WorkTime;
+import com.x.base.core.project.config.ZhengwuDingding;
+import com.x.base.core.project.gson.XGsonBuilder;
+import com.x.base.core.project.logger.Logger;
+import com.x.base.core.project.logger.LoggerFactory;
+import com.x.base.core.project.tools.DefaultCharset;
+import com.x.base.core.project.tools.FileTools;
+
+import io.github.lukehutch.fastclasspathscanner.FastClasspathScanner;
+import io.github.lukehutch.fastclasspathscanner.scanner.ScanResult;
+
+public class CreateConfigSample {
+
+	private static Logger logger = LoggerFactory.getLogger(CreateConfigSample.class);
+
+	public static void main(String... args) throws Exception {
+		File base = new File(args[0]);
+		File dir = new File(base, "configSample");
+		FastClasspathScanner scanner = new FastClasspathScanner(Packages.PREFIX);
+		ScanResult scanResult = scanner.scan();
+		List<Class<?>> classes = new ArrayList<Class<?>>();
+		classes.add(AppStyle.class);
+		classes.add(CenterServer.class);
+		classes.add(Collect.class);
+		classes.add(Dingding.class);
+		classes.add(DumpRestoreData.class);
+		classes.add(DumpRestoreStorage.class);
+		classes.add(LogLevel.class);
+		classes.add(Meeting.class);
+		classes.add(Messages.class);
+		classes.add(Node.class);
+		classes.add(Person.class);
+		classes.add(ProcessPlatform.class);
+		classes.add(Qiyeweixin.class);
+		classes.add(Query.class);
+		classes.add(Token.class);
+		classes.add(Vfs.class);
+		classes.add(WorkTime.class);
+		classes.add(ZhengwuDingding.class);
+		classes.add(ExternalDataSource.class);
+
+		Collections.sort(classes, new Comparator<Class<?>>() {
+			public int compare(Class<?> c1, Class<?> c2) {
+				return c1.getCanonicalName().compareTo(c2.getCanonicalName());
+			}
+		});
+		for (Class<?> cls : classes) {
+			Object o = MethodUtils.invokeStaticMethod(cls, "defaultInstance", null);
+			Map<String, Object> map = new LinkedHashMap<String, Object>();
+			map = XGsonBuilder.convert(o, map.getClass());
+			map = describe(cls, map);
+			String name = StringUtils.lowerCase(cls.getSimpleName().substring(0, 1)) + cls.getSimpleName().substring(1)
+					+ ".json";
+			File file = new File(dir, name);
+			logger.print("create file:{}.", file.getAbsoluteFile());
+			FileUtils.write(file, XGsonBuilder.toJson(map), DefaultCharset.charset);
+		}
+		convertExternalDataSource2ExternalDataSources(dir);
+		renameNode(dir);
+	}
+
+	private static void convertExternalDataSource2ExternalDataSources(File dir) throws Exception, IOException {
+		File file_externalDataSource = new File(dir, "externalDataSource.json");
+		File file_externalDataSources = new File(dir, "externalDataSources.json");
+		JsonElement jsonElement = XGsonBuilder.instance().fromJson(
+				FileUtils.readFileToString(file_externalDataSource, DefaultCharset.charset), JsonElement.class);
+		List<JsonElement> list = new ArrayList<>();
+		list.add(jsonElement);
+		FileUtils.writeStringToFile(file_externalDataSources, XGsonBuilder.toJson(list), DefaultCharset.charset);
+		file_externalDataSource.delete();
+	}
+
+	private static void renameNode(File dir) throws Exception, IOException {
+		File file_node = new File(dir, "node.json");
+		File file_node_local = new File(dir, "node_127.0.0.1.json");
+		if (file_node_local.exists()) {
+			file_node_local.delete();
+		}
+		FileUtils.moveFile(file_node, file_node_local);
+	}
+
+	private static <T extends ConfigObject> Map<String, Object> describe(Class<?> cls, Map<String, Object> map)
+			throws Exception {
+		for (Field field : FieldUtils.getFieldsListWithAnnotation(cls, FieldDescribe.class)) {
+			map.put("###" + field.getName(), field.getAnnotation(FieldDescribe.class).value() + "###");
+			if (ConfigObject.class.isAssignableFrom(field.getType())) {
+				Object o = MethodUtils.invokeStaticMethod(field.getType(), "defaultInstance", null);
+				Map<String, Object> m = new LinkedHashMap<String, Object>();
+				m = XGsonBuilder.convert(o, m.getClass());
+				map.put(field.getName(), describe(field.getType(), m));
+			} else if (List.class.isAssignableFrom(field.getType())) {
+				ParameterizedType parameterized = (ParameterizedType) field.getGenericType();
+				Class<Object> actualClass = (Class<Object>) parameterized.getActualTypeArguments()[0];
+				if (ConfigObject.class.isAssignableFrom(actualClass)) {
+					Object o = MethodUtils.invokeStaticMethod(actualClass, "defaultInstance", null);
+					Map<String, Object> m = new LinkedHashMap<String, Object>();
+					m = XGsonBuilder.convert(o, m.getClass());
+					List<Object> list = new ArrayList<>();
+					list.add(describe(actualClass, m));
+					map.put(field.getName(), list);
+				}
+			}
+		}
+		return map;
+	}
+}

+ 21 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/build/CreateLocalSample.java

@@ -0,0 +1,21 @@
+package com.x.base.core.project.build;
+
+import java.io.File;
+
+import org.apache.commons.io.FileUtils;
+
+import com.x.base.core.project.logger.Logger;
+import com.x.base.core.project.logger.LoggerFactory;
+import com.x.base.core.project.tools.DefaultCharset;
+
+public class CreateLocalSample {
+
+	private static Logger logger = LoggerFactory.getLogger(CreateLocalSample.class);
+
+	public static void main(String... args) throws Exception {
+		File base = new File(args[0]);
+		File dir = new File(base, "localSample");
+		File node_cfg = new File(dir, "node.cfg");
+		FileUtils.write(node_cfg, "127.0.0.1", DefaultCharset.charset);
+	}
+}

+ 91 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/build/CreateManifestCfg.java

@@ -0,0 +1,91 @@
+package com.x.base.core.project.build;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import com.x.base.core.project.logger.Logger;
+import com.x.base.core.project.logger.LoggerFactory;
+
+public class CreateManifestCfg {
+
+	private static Logger logger = LoggerFactory.getLogger(CreateManifestCfg.class);
+
+	public static void main(String[] args) throws Exception {
+		File base = new File(args[0]);
+		CreateManifestCfg creator = new CreateManifestCfg();
+		creator.commonsExt(base);
+		creator.storeJars(base);
+		creator.store(base);
+	}
+
+	public void store(File base) throws Exception {
+		File dir = new File(base, "store");
+		if ((!dir.exists()) || (!dir.isDirectory())) {
+			throw new Exception("error");
+		}
+		List<String> names = new ArrayList<>();
+		for (File o : dir.listFiles()) {
+			if ((!StringUtils.equals(o.getName(), "manifest.cfg")) && (!StringUtils.equals(o.getName(), "jars"))
+					&& (!StringUtils.equals(o.getName(), ".gitignore"))) {
+				if (StringUtils.isNotEmpty(o.getName())) {
+					if ((!StringUtils.equals("x_report_assemble_control.war", o.getName()))
+							&& (!StringUtils.equals("x_strategydeploy_assemble_control.war", o.getName()))) {
+						names.add(o.getName());
+					}
+				}
+			}
+		}
+		names = names.stream().sorted().collect(Collectors.toList());
+		File file = new File(dir, "manifest.cfg");
+		logger.print("create manifest.cfg, path:{}.", file.getAbsolutePath());
+		FileUtils.writeLines(file, names);
+	}
+
+	public void storeJars(File base) throws Exception {
+		File dir = new File(base, "store/jars");
+		if ((!dir.exists()) || (!dir.isDirectory())) {
+			throw new Exception("error");
+		}
+		List<String> names = new ArrayList<>();
+		for (File o : dir.listFiles()) {
+			if ((!StringUtils.equals(o.getName(), "manifest.cfg"))
+					&& (!StringUtils.equals(o.getName(), ".gitignore"))) {
+				if (StringUtils.isNotEmpty(o.getName())) {
+					if ((!StringUtils.equals("x_report_core_entity.jar", o.getName()))
+							&& (!StringUtils.equals("x_strategydeploy_core_entity.jar", o.getName()))) {
+						names.add(o.getName());
+					}
+				}
+			}
+		}
+		names = names.stream().sorted().collect(Collectors.toList());
+		File file = new File(dir, "manifest.cfg");
+		logger.print("create manifest.cfg, path:{}.", file.getAbsolutePath());
+		FileUtils.writeLines(file, names);
+	}
+
+	public void commonsExt(File base) throws Exception {
+		File dir = new File(base, "commons/ext");
+		if ((!dir.exists()) || (!dir.isDirectory())) {
+			throw new Exception("error");
+		}
+		List<String> names = new ArrayList<>();
+		for (File o : dir.listFiles()) {
+			if ((!StringUtils.equals(o.getName(), "manifest.cfg"))
+					&& (!StringUtils.equals(o.getName(), ".gitignore"))) {
+				if (StringUtils.isNotEmpty(o.getName())) {
+					names.add(o.getName());
+				}
+			}
+		}
+		names = names.stream().sorted().collect(Collectors.toList());
+		File file = new File(dir, "manifest.cfg");
+		logger.print("create manifest.cfg, path:{}.", file.getAbsolutePath());
+		FileUtils.writeLines(file, names);
+	}
+}