📄 servicebuilder.java
字号:
_createServiceUtil(entity, _REMOTE);
if (Validator.isNotNull(_jsonFileName)) {
_createServiceHttp(entity);
_createServiceJSON(entity);
if (entity.hasColumns()) {
_createServiceJSONSerializer(entity);
}
_createServiceSoap(entity);
}
}
}
}//end of for 循环
_createHBMXML();
_createModelHintsXML();
_createSpringXML();
System.out.println("#####" + _jsonFileName);
if (Validator.isNotNull(_jsonFileName)) {
_createJSONJS();
_createRemotingXML();//cyzhang
}
_createSQLIndexes();
_createSQLTables();
_createSQLSequences();
_createExceptions(exceptionList);
_createBaseModelImpl();
_createBasePersistence();
_createBeanLocatorUtil();
_createDynamicDialect();
_createFinderCache();
_createHibernateConfiguration();
_createHibernateUtil();
_createPrincipalBean();
_createProps();
_createPropsUtil();
_createSpringDataSourceXML();
_createSpringUtil();
}// enf of build
}
catch (Exception e) {
e.printStackTrace();
}
}
public Entity getEntity(String name) throws IOException {
int pos = name.lastIndexOf(".");
if (pos == -1) {
pos = _ejbList.indexOf(new Entity(name));
return (Entity)_ejbList.get(pos);
}
else {
String refPackage = name.substring(0, pos);
String refPackageDir = StringUtil.replace(refPackage, ".", "/");
String refEntity = name.substring(pos + 1, name.length());
String refFileName =
_implDir + "/" + refPackageDir + "/service.xml";
File refFile = new File(refFileName);
boolean useTempFile = false;
if (!refFile.exists()) {
refFileName = Time.getTimestamp();
refFile = new File(refFileName);
ClassLoader classLoader = getClass().getClassLoader();
FileUtil.write(
refFileName,
StringUtil.read(
classLoader, refPackageDir + "/service.xml"));
useTempFile = true;
}
ServiceBuilder serviceBuilder = new ServiceBuilder(
refFileName, _hbmFileName, _modelHintsFileName, _springFileName,
_springDataSourceFileName, _apiDir, _implDir, _jsonFileName,
_sqlDir, _sqlFileName, _autoNamespaceTables,
_baseModelImplPackage, _basePersistencePackage,
_beanLocatorUtilPackage, _principalBeanPackage,
_propsUtilPackage, _springHibernatePackage, _springUtilPackage,
false);
Entity entity = serviceBuilder.getEntity(refEntity);
if (useTempFile) {
refFile.deleteOnExit();
}
return entity;
}
}
private void _appendNullLogic(EntityColumn col, StringMaker sm) {
sm.append("if (" + col.getName() + " == null) {");
if (col.getComparator().equals("=")) {
sm.append("query.append(\"" + col.getDBName() + " IS NULL\");");
}
else if (col.getComparator().equals("<>") || col.getComparator().equals("!=")) {
sm.append("query.append(\"" + col.getDBName() + " IS NOT NULL\");");
}
else {
sm.append("query.append(\"" + col.getDBName() + " " + col.getComparator() + " null\");");
}
sm.append("} else {");
}
private void _createBaseModelImpl() throws IOException {
if (_baseModelImplPackage.equals("com.bkgd.platform.system.model.impl")) {
return;
}
// Content
String content = StringUtil.read(getClass().getClassLoader(), "com/liferay/portal/tools/dependencies/BaseModelImpl.java");
content = StringUtil.replace(
content,
new String[] {
"package com.bkgd.platform.system.model.impl;",
"import com.bkgd.platform.system.util.PropsUtil;"
},
new String[] {
"package " + _baseModelImplPackage + ";",
"import " + _propsUtilPackage + ".PropsUtil;"
});
// Write file
File ejbFile = new File(_implDir + "/" + StringUtil.replace(_baseModelImplPackage, ".", "/") + "/BaseModelImpl.java");
FileUtil.write(ejbFile, content, true);
}
private void _createBasePersistence() throws IOException {
if (_basePersistencePackage.equals("com.bkgd.platform.system.service.persistence")) {
return;
}
// Content
String content = StringUtil.read(getClass().getClassLoader(), "com/liferay/portal/tools/dependencies/BasePersistence.java");
content = StringUtil.replace(
content,
new String[] {
"package com.bkgd.platform.system.service.persistence;",
"import com.bkgd.platform.system.spring.hibernate."
},
new String[] {
"package " + _basePersistencePackage + ";",
"import " + _springHibernatePackage + "."
});
// Write file
File ejbFile = new File(_implDir + "/" + StringUtil.replace(_basePersistencePackage, ".", "/") + "/BasePersistence.java");
FileUtil.write(ejbFile, content, true);
}
private void _createBeanLocatorUtil() throws IOException {
if (_beanLocatorUtilPackage.equals("com.bkgd.platform.system.kernel.bean")) {
return;
}
StringMaker sm = new StringMaker();
// Package
sm.append("package " + _beanLocatorUtilPackage + ";");
// Imports
sm.append("import " + _springUtilPackage + " .SpringUtil;");
sm.append("import com.bkgd.platform.system.util.CollectionFactory;");
sm.append("import java.util.Set;");
sm.append("import org.apache.commons.logging.Log;");
sm.append("import org.apache.commons.logging.LogFactory;");
sm.append("import org.springframework.context.ApplicationContext;");
// Class declaration
sm.append("public class BeanLocatorUtil {");
// Methods
sm.append("public static Object locate(String name) {");
sm.append("if (_beans.contains(name)) {");
sm.append("if (_log.isWarnEnabled()) {");
sm.append("_log.warn(\"Cache the reference to \" + name + \" for better performance\");");
sm.append("}");
sm.append("}");
sm.append("ApplicationContext ctx = SpringUtil.getContext();");
sm.append("if (_log.isDebugEnabled()) {");
sm.append("_log.debug(\"Locating \" + name);");
sm.append("}");
sm.append("Object obj = ctx.getBean(name);");
sm.append("_beans.add(name);");
sm.append("return obj;");
sm.append("}");
// Fields
sm.append("private static Log _log = LogFactory.getLog(BeanLocatorUtil.class);");
sm.append("private static Set _beans = CollectionFactory.getHashSet();");
// Class close brace
sm.append("}");
// Write file
File ejbFile = new File(_implDir + "/" + StringUtil.replace(_beanLocatorUtilPackage, ".", "/") + "/BeanLocatorUtil.java");
writeFile(ejbFile, sm.toString());
}
private void _createDynamicDialect() throws IOException {
if (_springHibernatePackage.equals("com.bkgd.platform.system.spring.hibernate")) {
return;
}
// Content
String content = StringUtil.read(getClass().getClassLoader(), "com/liferay/portal/tools/dependencies/DynamicDialect.java");
content = StringUtil.replace(
content,
new String[] {
"package com.bkgd.platform.system.spring.hibernate;"
},
new String[] {
"package " + _springHibernatePackage + ";"
});
// Write file
File ejbFile = new File(_implDir + "/" + StringUtil.replace(_springHibernatePackage, ".", "/") + "/DynamicDialect.java");
FileUtil.write(ejbFile, content, true);
}
private void _createEJBPK(Entity entity) throws IOException {
List pkList = entity.getPKList();
StringMaker sm = new StringMaker();
// Package
sm.append("package " + _packagePath + ".service.persistence;");
// Imports
sm.append("import com.bkgd.platform.system.kernel.util.DateUtil;");
sm.append("import com.bkgd.platform.system.kernel.util.StringMaker;");
sm.append("import com.bkgd.platform.system.kernel.util.StringPool;");
sm.append("import java.io.Serializable;");
sm.append("import java.util.Date;");
// Class declaration
sm.append("public class " + entity.getPKClassName() + " implements Comparable, Serializable {");
// Fields
for (int i = 0; i < pkList.size(); i++) {
EntityColumn col = (EntityColumn)pkList.get(i);
sm.append("public " + col.getType() + " " + col.getName() + ";");
}
// Default constructor
sm.append("public " + entity.getPKClassName() + "() {}");
// Primary key constructor
sm.append("public " + entity.getPKClassName() + "(");
for (int i = 0; i < pkList.size(); i++) {
EntityColumn col = (EntityColumn)pkList.get(i);
sm.append(col.getType() + " " + col.getName());
if ((i + 1) != pkList.size()) {
sm.append(", ");
}
}
sm.append(") {");
for (int i = 0; i < pkList.size(); i++) {
EntityColumn col = (EntityColumn)pkList.get(i);
sm.append("this." + col.getName() + " = " + col.getName() + ";");
}
sm.append("}");
// Getter and setter methods
for (int i = 0; i < pkList.size(); i++) {
EntityColumn col = (EntityColumn)pkList.get(i);
if (!col.isCollection()) {
sm.append("public " + col.getType() + " get" + col.getMethodName() + "() {");
sm.append("return " + col.getName() + ";");
sm.append("}");
sm.append("public void set" + col.getMethodName() + "(" + col.getType() + " " + col.getName() + ") {");
sm.append("this." + col.getName() + " = " + col.getName() + ";");
sm.append("}");
}
}
// Compare to method
sm.append("public int compareTo(Object obj) {");
sm.append("if (obj == null) {");
sm.append("return -1;");
sm.append("}");
sm.append(entity.getPKClassName() + " pk = (" + entity.getPKClassName() + ")obj;");
sm.append("int value = 0;");
for (int i = 0; i < pkList.size(); i++) {
EntityColumn col = (EntityColumn)pkList.get(i);
String colType = col.getType();
if (!col.isPrimitiveType()) {
if (colType.equals("Date")) {
sm.append("value = DateUtil.compareTo(" + col.getName() + ", pk." + col.getName() + ");");
}
else {
sm.append("value = " + col.getName() + ".compareTo(pk." + col.getName() + ");");
}
}
else {
if (colType.equals("boolean")) {
sm.append("if (!" + col.getName() + " && pk." + col.getName() + ") {");
sm.append("value = -1;");
sm.append("}");
sm.append("else if (" + col.getName() + " && !pk." + col.getName() + ") {");
sm.append("value = 1;");
sm.append("}");
sm.append("else {");
sm.append("value = 0;");
sm.append("}");
}
else {
sm.append("if (" + col.getName() + " < pk." + col.getName() + ") {");
sm.append("value = -1;");
sm.append("}");
sm.append("else if (" + col.getName() + " > pk." + col.getName() + ") {");
sm.append("value = 1;");
sm.append("}");
sm.append("else {");
sm.append("value = 0;");
sm.append("}");
}
}
sm.append("if (value != 0) {");
sm.append("return value;");
sm.append("}");
}
sm.append("return 0;");
sm.append("}");
// Equals method
sm.append("public boolean equals(Object obj) {");
sm.append("if (obj == null) {");
sm.append("return false;");
sm.append("}");
sm.append(entity.getPKClassName() + " pk = null;");
sm.append("try {");
sm.append("pk = (" + entity.getPKClassName() + ")obj;");
sm.append("}");
sm.append("catch (ClassCastException cce) {");
sm.append("return false;");
sm.append("}");
sm.append("if (");
for (int i = 0; i < pkList.size(); i++) {
EntityColumn col = (EntityColumn)pkList.get(i);
if (!col.isPrimitiveType()) {
sm.append("(" + col.getName() + ".equals(pk." + col.getName() + "))");
}
else {
sm.append("(" + col.getName() + " == pk." + col.getName() + ")");
}
if ((i + 1) != pkList.size()) {
sm.append(" && ");
}
}
sm.append(") {");
sm.append("return true;");
sm.append("} else {");
sm.append("return false;");
sm.append("}");
sm.append("}");
// Hash code method
sm.append("public int hashCode() {");
sm.append("return (");
for (int i = 0; i < pkList.size(); i++) {
EntityColumn col = (EntityColumn)pkList.get(i);
if (i != 0) {
sm.append(" + ");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -