private static class DtoGenerator.DtoClassGeneratorInstance extends Object
Modifier and Type | Field and Description |
---|---|
private Properties |
config |
private com.sun.codemodel.JMethod |
constructor |
private com.sun.codemodel.JVar |
dataSource |
private DtoClass |
dtoClass |
private com.sun.codemodel.JDefinedClass |
dtoJClass |
private com.sun.codemodel.JCodeModel |
model |
private Map<String,ResultSetClass> |
resultSetMap |
private Map<String,com.sun.codemodel.JFieldVar> |
spFields |
Constructor and Description |
---|
DtoClassGeneratorInstance(Properties config,
DtoClass dtoClass,
Map<String,ResultSetClass> resultSetMap) |
Modifier and Type | Method and Description |
---|---|
private void |
addAnnotationArrayMemberParam(com.sun.codemodel.JAnnotationArrayMember jAnnotationArrayMember,
AnnotationValueInfo annotationValueInfo) |
private void |
addAnnotationParam(com.sun.codemodel.JAnnotationUse jAnnotationUse,
AnnotationValueInfo annotationValueInfo) |
private void |
addAnnotations(StoredProcedureMethod storedProcedureMethod,
com.sun.codemodel.JMethod method)
Adds the annotations to the method.
|
private com.sun.codemodel.JFieldVar |
addConstructorField(StoredProcedureMethod storedProcedureMethod)
Generates:
Field variable:
[ private final {SP_NAME_CLASS} {SP_NAME_VARIABLE} ]+;
Constructor assignment:
[ {SP_NAME_VARIABLE} = new {SP_NAME_CLASS}(dataSource) ]+
|
private void |
addDtoMethod(StoredProcedureMethod storedProcedureMethod,
com.sun.codemodel.JFieldVar field)
Generates:
public {DTO_METHOD_RETURN_TYPE} {DTO_METHOD_NAME}({DTO_METHOD_PARAMETERS}) {
return (({DTO_METHOD_RETURN_TYPE}) {SP_NAME_VARIABLE}.execute({DTO_METHOD_PARAMETERS}).get("#result-set-0"));
}
If it's a ResultSet:
public {DTO_METHOD_RETURN_TYPE} {DTO_METHOD_NAME}({DTO_METHOD_PARAMETERS}) {
Map
|
private void |
addInterceptorCallAfter(StoredProcedureMethod storedProcedureMethod,
com.sun.codemodel.JMethod method,
com.sun.codemodel.JInvocation execute,
com.sun.codemodel.JVar interceptorIdObject)
Adds the interceptor call of the after method.
|
DtoGenerator.DtoClassGeneratorInstance |
addStoredProcedureMethods()
Adds the stored procedure to the constructor (to get it autowired into the class) and creates the actual
method to call the stored procedure.
|
private void |
addSuperClassOrInterface()
Generates:
implements *Dao
extends *Dao
|
private DtoGenerator.DtoClassGeneratorInstance |
createClass()
Generates:
@Service public class *DaoImpl extends *Dao
@Service public class *DaoImpl implements *Dao
|
DtoGenerator.DtoClassGeneratorInstance |
createConstructor()
Generates:
@Autowired public * (DataSource dataSource)
|
private com.sun.codemodel.JInvocation |
getExecute(StoredProcedureMethod storedProcedureMethod,
com.sun.codemodel.JFieldVar field,
com.sun.codemodel.JMethod method)
Generates:
{FIELD}.execute( [ * ]* )
|
com.sun.codemodel.JCodeModel |
getModel() |
private com.sun.codemodel.JClass |
getReturnClass(StoredProcedureMethod storedProcedureMethod)
Generates the class for the return type.
|
private void |
multipleResultSets(StoredProcedureMethod storedProcedureMethod,
com.sun.codemodel.JClass returnClass,
com.sun.codemodel.JMethod method,
com.sun.codemodel.JInvocation execute,
com.sun.codemodel.JVar interceptorIdObject)
Generates the body of the DTO method for methods with several result-sets.
|
private void |
singleResultSet(StoredProcedureMethod storedProcedureMethod,
com.sun.codemodel.JClass returnClass,
com.sun.codemodel.JMethod method,
com.sun.codemodel.JInvocation execute,
com.sun.codemodel.JVar interceptorIdObject)
Generates the body of the DTO method for methods with exactly one result-set.
|
private final Properties config
private final DtoClass dtoClass
private final Map<String,ResultSetClass> resultSetMap
private com.sun.codemodel.JCodeModel model
private com.sun.codemodel.JDefinedClass dtoJClass
private com.sun.codemodel.JMethod constructor
private com.sun.codemodel.JVar dataSource
public DtoClassGeneratorInstance(Properties config, DtoClass dtoClass, Map<String,ResultSetClass> resultSetMap)
public com.sun.codemodel.JCodeModel getModel()
private DtoGenerator.DtoClassGeneratorInstance createClass() throws com.sun.codemodel.JClassAlreadyExistsException
@Service public class *DaoImpl extends *Dao @Service public class *DaoImpl implements *Dao
com.sun.codemodel.JClassAlreadyExistsException
public DtoGenerator.DtoClassGeneratorInstance createConstructor()
@Autowired public * (DataSource dataSource)
public DtoGenerator.DtoClassGeneratorInstance addStoredProcedureMethods() throws com.sun.codemodel.JClassAlreadyExistsException
com.sun.codemodel.JClassAlreadyExistsException
private void addSuperClassOrInterface()
implements *Dao extends *Dao
private com.sun.codemodel.JFieldVar addConstructorField(StoredProcedureMethod storedProcedureMethod)
[ private final {SP_NAME_CLASS} {SP_NAME_VARIABLE} ]+;Constructor assignment:[ {SP_NAME_VARIABLE} = new {SP_NAME_CLASS}(dataSource) ]+
private void addDtoMethod(StoredProcedureMethod storedProcedureMethod, com.sun.codemodel.JFieldVar field) throws com.sun.codemodel.JClassAlreadyExistsException
public {DTO_METHOD_RETURN_TYPE} {DTO_METHOD_NAME}({DTO_METHOD_PARAMETERS}) { return (({DTO_METHOD_RETURN_TYPE}) {SP_NAME_VARIABLE}.execute({DTO_METHOD_PARAMETERS}).get("#result-set-0")); }If it's a ResultSet:
public {DTO_METHOD_RETURN_TYPE} {DTO_METHOD_NAME}({DTO_METHOD_PARAMETERS}) { Mapmap = {SP_NAME_VARIABLE}.execute({DTO_METHOD_PARAMETERS}); return new {DTO_METHOD_RETURN_TYPE}((*)map.get("#result-set-0"), (*)map.get("#result-set-*"), ...); }
com.sun.codemodel.JClassAlreadyExistsException
private com.sun.codemodel.JInvocation getExecute(StoredProcedureMethod storedProcedureMethod, com.sun.codemodel.JFieldVar field, com.sun.codemodel.JMethod method)
{FIELD}.execute( [ * ]* )
private com.sun.codemodel.JClass getReturnClass(StoredProcedureMethod storedProcedureMethod)
private void addAnnotations(StoredProcedureMethod storedProcedureMethod, com.sun.codemodel.JMethod method) throws com.sun.codemodel.JClassAlreadyExistsException
com.sun.codemodel.JClassAlreadyExistsException
private void multipleResultSets(StoredProcedureMethod storedProcedureMethod, com.sun.codemodel.JClass returnClass, com.sun.codemodel.JMethod method, com.sun.codemodel.JInvocation execute, com.sun.codemodel.JVar interceptorIdObject)
Example:
Object interceptorIdObject; // optional interceptorIdObject = *SpInterceptor.before("*"); // optional Mapmap; map = sp*.execute(id); *SpInterceptor.after(interceptorIdObject, "*"); // optional List<*> list0; list0 = ((*> ) map.get("#result-set-0")); * obj0; if (list0 .size() == 1) { obj0 = list0.get(0); } else { if (list0.size() == 0) { throw new ObjectDoesNotExist(); } else { throw new MultipleObjectsReturned(); } } List<*> list1; list1 = ((<*> ) map.get("#result-set-1")); return new *ResultSet(obj0, list1);
Example if the entity in the ResultSet is annotated with @ReturnNull:
Object interceptorIdObject; // optional interceptorIdObject = *SpInterceptor.before("*"); // optional Mapmap; map = sp*.execute(id); *SpInterceptor.after(interceptorIdObject, "*"); // optional List<*> list0; list0 = ((List<*>) map.get("#result-set-0")); * obj0; if (list0.size() == 1) { obj0 = list0.get(0); } else { if (list0.size() == 0) { obj0 = null; } else { throw new MultipleObjectsReturned(); } } List<*> list1; list1 = ((List<*>) map.get("#result-set-1")); return new *ResultSet(obj0, list1);
Example if the entity in the ResultSet is an Optional:
Object interceptorIdObject; // optional interceptorIdObject = *SpInterceptor.before("*"); // optional Mapmap; map = sp*.execute(id); *SpInterceptor.after(interceptorIdObject, "*"); // optional List<*> list0; list0 = ((List<*>) map.get("#result-set-0")); Optional obj0; if (list0.size() == 1) { obj0 = Optional.of(list0.get(0)); } else { if (list0.size() == 0) { obj0 = Optional.empty(); } else { throw new MultipleObjectsReturned(); } } List<*> list1; list1 = ((List<*>) map.get("#result-set-1")); return new *ResultSet(obj0, list1);
private void singleResultSet(StoredProcedureMethod storedProcedureMethod, com.sun.codemodel.JClass returnClass, com.sun.codemodel.JMethod method, com.sun.codemodel.JInvocation execute, com.sun.codemodel.JVar interceptorIdObject)
If the method's return value is a list:
Mapmap; Object interceptorIdObject; // optional interceptorIdObject = *SpInterceptor.before("*"); // optional map = sp*.execute(); *SpInterceptor.after(interceptorIdObject, "*"); // optional return ((List<*> ) map.get("#result-set-0"));
If the method's return value is an entity:
Object interceptorIdObject; // optional interceptorIdObject = *SpInterceptor.before("*"); // optional List<*> list; list = ((List<*> ) sp*.execute( [ * ]* ).get("#result-set-0")); *SpInterceptor.after(interceptorIdObject, "*"); // optional if (list.size() == 1) { return list.get(0); } else { if (list.size() == 0) { throw new ObjectDoesNotExist(); } else { throw new MultipleObjectsReturned(); } }
If the method's return value is an entity and the method is annotated with @ReturnNull:
Object interceptorIdObject; // optional interceptorIdObject = *SpInterceptor.before("*"); // optional List<*> list; list = ((List<*> ) sp*.execute( [ * ]* ).get("#result-set-0")); *SpInterceptor.after(interceptorIdObject, "*"); // optional if (list.size() == 1) { return list.get(0); } else { if (list.size() == 0) { return null; } else { throw new MultipleObjectsReturned(); } }
If the method's return value is an Optional of an entity:
Object interceptorIdObject; // optional interceptorIdObject = *SpInterceptor.before("*"); // optional List<*> list; list = ((List<*> ) sp*.execute( [ * ]* ).get("#result-set-0")); *SpInterceptor.after(interceptorIdObject, "*"); // optional if (list.size() == 1) { return Optional.of(list.get(0)); } else { if (list.size() == 0) { return Optional.empty(); } else { throw new MultipleObjectsReturned(); } }
private void addInterceptorCallAfter(StoredProcedureMethod storedProcedureMethod, com.sun.codemodel.JMethod method, com.sun.codemodel.JInvocation execute, com.sun.codemodel.JVar interceptorIdObject)
private void addAnnotationParam(com.sun.codemodel.JAnnotationUse jAnnotationUse, AnnotationValueInfo annotationValueInfo) throws com.sun.codemodel.JClassAlreadyExistsException
com.sun.codemodel.JClassAlreadyExistsException
private void addAnnotationArrayMemberParam(com.sun.codemodel.JAnnotationArrayMember jAnnotationArrayMember, AnnotationValueInfo annotationValueInfo)
Copyright © 2015. All rights reserved.