|
|
@@ -7,11 +7,12 @@ import java.util.List;
|
|
|
import java.util.Properties;
|
|
|
|
|
|
import com.x.base.core.container.FactorDistributionPolicy;
|
|
|
+import com.x.base.core.entity.dynamic.DynamicBaseEntity;
|
|
|
import com.x.base.core.entity.JpaObject;
|
|
|
+import com.x.base.core.entity.dynamic.DynamicEntity;
|
|
|
import com.x.base.core.entity.tools.JpaObjectTools;
|
|
|
import com.x.base.core.project.config.Config;
|
|
|
import com.x.base.core.project.config.Node;
|
|
|
-import com.x.base.core.project.tools.Crypto;
|
|
|
import com.x.base.core.project.tools.ListTools;
|
|
|
|
|
|
import org.apache.commons.io.FileUtils;
|
|
|
@@ -146,7 +147,7 @@ public class PersistenceXmlHelper {
|
|
|
property.addAttribute("value", "false");
|
|
|
}
|
|
|
|
|
|
- public static List<String> write(String path, List<String> entities) throws Exception {
|
|
|
+ public static List<String> write(String path, List<String> entities, boolean dynamicFlag) throws Exception {
|
|
|
List<String> names = new ArrayList<>();
|
|
|
String name = "";
|
|
|
try {
|
|
|
@@ -157,6 +158,7 @@ public class PersistenceXmlHelper {
|
|
|
persistence.addAttribute(QName.get("schemaLocation", "xsi", "http://www.w3.org/2001/XMLSchema-instance"),
|
|
|
"http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd");
|
|
|
persistence.addAttribute("version", "2.0");
|
|
|
+ List<String> dyClasses = new ArrayList<>();
|
|
|
for (String className : names) {
|
|
|
name = className;
|
|
|
Class<? extends JpaObject> clazz = (Class<JpaObject>) Class.forName(className);
|
|
|
@@ -170,6 +172,33 @@ public class PersistenceXmlHelper {
|
|
|
mapped_element.addText(o.getName());
|
|
|
}
|
|
|
}
|
|
|
+ if(dynamicFlag) {
|
|
|
+ for (String className : names) {
|
|
|
+ if (className.startsWith(DynamicEntity.CLASS_PACKAGE)) {
|
|
|
+ dyClasses.add(className);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!dyClasses.isEmpty()) {
|
|
|
+ String dyClassName = DynamicBaseEntity.class.getName();
|
|
|
+ names.add(dyClassName);
|
|
|
+
|
|
|
+ Element unit = persistence.addElement("persistence-unit");
|
|
|
+ unit.addAttribute("name", dyClassName);
|
|
|
+ unit.addAttribute("transaction-type", "RESOURCE_LOCAL");
|
|
|
+ Element provider = unit.addElement("provider");
|
|
|
+ provider.addText(PersistenceProviderImpl.class.getName());
|
|
|
+ for (String dyClass : dyClasses) {
|
|
|
+ Element mapped_element = unit.addElement("class");
|
|
|
+ mapped_element.addText(dyClass);
|
|
|
+ }
|
|
|
+ for (Class<?> o : JpaObjectTools.scanMappedSuperclass(DynamicBaseEntity.class)) {
|
|
|
+ if(!o.getName().equals(DynamicBaseEntity.class.getName())) {
|
|
|
+ Element mapped_element = unit.addElement("class");
|
|
|
+ mapped_element.addText(o.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
OutputFormat format = OutputFormat.createPrettyPrint();
|
|
|
format.setEncoding("UTF-8");
|
|
|
File file = new File(path);
|