CREATE OR REPLACE PROCEDURE UNIVCOOP_DEV.PROC_TABLE_TO_TEST_CODE
(
V_TABLE_NAME IN VARCHAR2,
V_BASE_URL IN VARCHAR2,
SQL_DESC OUT VARCHAR2
)
IS
V_BASE_CLASS VARCHAR(20) := '';
BEGIN
SQL_DESC := '';
V_BASE_CLASS := REPLACE(INITCAP( V_TABLE_NAME ),'_','');
SQL_DESC := SQL_DESC || '@SpringBootTest' || CHR(13);
SQL_DESC := SQL_DESC || '@AutoConfigureMockMvc' || CHR(13);
SQL_DESC := SQL_DESC || 'class ' || V_BASE_CLASS || 'ControllerTest extends BaseControllerTest {' || CHR(13);
SQL_DESC := SQL_DESC || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' @Autowired' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' private ' || V_BASE_CLASS || 'Controller controller;' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' @Test' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' void getList() throws Exception {' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || CHR(9) || ' ' || V_BASE_CLASS || 'DtoReq req = this.make' || V_BASE_CLASS || 'DtoReq();' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || CHR(9) || ' new MockMvcTest<' || V_BASE_CLASS || 'Controller, ' || V_BASE_CLASS || 'DtoReq>(mvc, ctx, objectMapper, controller)' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || CHR(9) || ' .testController(req, "' || V_BASE_URL || '/getList");' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' }' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' @Transactional' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' @Test' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' void insert() throws Exception {' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || CHR(9) || ' ' || V_BASE_CLASS || 'Dto data = this.make' || V_BASE_CLASS || 'Dto();' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || CHR(9) || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || CHR(9) || ' new MockMvcTest<' || V_BASE_CLASS || 'Controller, ' || V_BASE_CLASS || 'Dto>(mvc, ctx, objectMapper, controller)' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || CHR(9) || ' .testController(data, "' || V_BASE_URL || '/insert");' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' }' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' @Transactional' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' @Test' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' void update() throws Exception {' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' ' || V_BASE_CLASS || 'Dto data = this.make' || V_BASE_CLASS || 'Dto();' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' new MockMvcTest<' || V_BASE_CLASS || 'Controller, ' || V_BASE_CLASS || 'Dto>(mvc, ctx, objectMapper, controller)' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' .testController(data, "' || V_BASE_URL || '/update");' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' }' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' @Transactional' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' @Test' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' void delete() throws Exception {' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' ' || V_BASE_CLASS || 'DtoReq req = this.make' || V_BASE_CLASS || 'DtoReq();' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' new MockMvcTest<' || V_BASE_CLASS || 'Controller, ' || V_BASE_CLASS || 'DtoReq>(mvc, ctx, objectMapper, controller)' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' .testController(req, "' || V_BASE_URL || '/delete");' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' }' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' private ' || V_BASE_CLASS || 'Dto make' || V_BASE_CLASS || 'Dto(){' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' String currentDate = Global.getDateInfo().getCurrentDay();' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' String regDate = Global.getDateInfo().getCurrentDateTime();' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' ' || V_BASE_CLASS || 'Dto rtn = new ' || V_BASE_CLASS || 'Dto();' || CHR(13);
FOR C_DATA IN (SELECT * FROM V_COLUMNINFO vc WHERE TABLE_NAME = V_TABLE_NAME)
LOOP
SQL_DESC := SQL_DESC || CHR(9) || ' rtn.set' || REPLACE(INITCAP( C_DATA.COLUMN_NAME ),'_','') || '(' ;
SQL_DESC := SQL_DESC || CASE WHEN C_DATA.JAVA_TYPE = 'String' THEN '''value'''
WHEN C_DATA.JAVA_TYPE = 'Long' THEN '0d'
WHEN C_DATA.JAVA_TYPE = 'Integer' THEN '0'
WHEN C_DATA.JAVA_TYPE = 'Decimal' THEN '0d'
ELSE NULL
END;
SQL_DESC := SQL_DESC || ');' || CHR(13);
END LOOP;
SQL_DESC := SQL_DESC || CHR(9) || ' return rtn;' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' }' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' private ' || V_BASE_CLASS || 'DtoReq make' || V_BASE_CLASS || 'DtoReq() {' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || '' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' ' || V_BASE_CLASS || 'DtoReq rtn = new ' || V_BASE_CLASS || 'DtoReq();' || CHR(13);
FOR C_DATA IN (SELECT * FROM V_COLUMNINFO vc WHERE TABLE_NAME = V_TABLE_NAME AND PK_FLAG = 'Y')
LOOP
SQL_DESC := SQL_DESC || CHR(9) || ' rtn.set' || REPLACE(INITCAP( C_DATA.COLUMN_NAME ),'_','') || '(' ;
SQL_DESC := SQL_DESC || CASE WHEN C_DATA.JAVA_TYPE = 'String' THEN '''value'''
WHEN C_DATA.JAVA_TYPE = 'Long' THEN '0d'
WHEN C_DATA.JAVA_TYPE = 'Integer' THEN '0'
WHEN C_DATA.JAVA_TYPE = 'Decimal' THEN '0d'
ELSE NULL
END;
SQL_DESC := SQL_DESC || ');' || CHR(13);
END LOOP;
SQL_DESC := SQL_DESC || CHR(9) || ' return rtn;' || CHR(13);
SQL_DESC := SQL_DESC || CHR(9) || ' }' || CHR(13);
SQL_DESC := SQL_DESC || '}' || CHR(13);
END;