feat: improve field type mapping and add sample dataset resource
- Update GUtils.java to handle case-insensitive column type mapping. - Add "number" type mapping to support more database dialects. - Add DevResources/Dataset.xml as a sample dataset definition.
This commit is contained in:
Binary file not shown.
@@ -1 +1 @@
|
|||||||
2025-09-24
|
2026-03-02
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<DATASET ID="DS-PROJECT">
|
||||||
|
<SCHEMA>APP</SCHEMA>
|
||||||
|
<TABLENAME>PROJECTS</TABLENAME>
|
||||||
|
<KEYFIELDS>PROJ_ID</KEYFIELDS>
|
||||||
|
<SQL>
|
||||||
|
<SELECT>SELECT PROJ_ID
|
||||||
|
, PROJ_YEAR
|
||||||
|
, PJM_CODE
|
||||||
|
, STM_CODE
|
||||||
|
, BTM_CODE
|
||||||
|
, ACM_CODE, BUD.GET_ACTIVITY(ACM_CODE) ACM_NAME
|
||||||
|
, ACM_CODE VACM_CODE
|
||||||
|
, PLAN_TYPE
|
||||||
|
, PROJ_DURATION
|
||||||
|
, PROJ_START_YEAR
|
||||||
|
, PROJ_END_YEAR
|
||||||
|
, PROJ_FOR_STAFF
|
||||||
|
, PROJ_ALL_STAFF
|
||||||
|
, PROJ_TYPE
|
||||||
|
, PROJ_FROM_YEAR
|
||||||
|
, PROJ_PRINCIPLES
|
||||||
|
, PROJ_OBJECTIVE
|
||||||
|
, PROJ_BENEFIT
|
||||||
|
, PROJ_GOLD
|
||||||
|
, PROJ_TAGET_GROUP
|
||||||
|
, PROJ_LOCATION
|
||||||
|
, PROJ_ACTIVITY
|
||||||
|
, PROJ_PHASE
|
||||||
|
, PROJ_MONITORING
|
||||||
|
</SELECT>
|
||||||
|
<FROM>FROM PROJECTS</FROM>
|
||||||
|
<ORDER>ORDER BY PROJ_YEAR DESC, PROJ_ID</ORDER>
|
||||||
|
</SQL>
|
||||||
|
<FIELDS>
|
||||||
|
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="project.id" WIDTH="32"/>
|
||||||
|
<FIELD NAME="PROJ_YEAR" TYPE="NUMBER" LABEL="project.year" WIDTH="4"/>
|
||||||
|
<FIELD NAME="PJM_CODE" TYPE="TEXT" LABEL="project.pjm_code" WIDTH="20"/>
|
||||||
|
<FIELD NAME="STM_CODE" TYPE="TEXT" LABEL="project.stm_code" WIDTH="10" DEFAULT="${DEPT_CODE}"/>
|
||||||
|
<FIELD NAME="BTM_CODE" TYPE="TEXT" LABEL="project.btm_code" WIDTH="10" DEFAULT="01"/>
|
||||||
|
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="project.acm_code" WIDTH="20"/>
|
||||||
|
<FIELD NAME="PLAN_TYPE" TYPE="TEXT" LABEL="project.plan_type" WIDTH="15"/>
|
||||||
|
<FIELD NAME="PROJ_DURATION" TYPE="NUMBER" LABEL="project.duration" WIDTH="0"/>
|
||||||
|
<FIELD NAME="PROJ_START_YEAR" TYPE="NUMBER" LABEL="project.start_year" WIDTH="0"/>
|
||||||
|
<FIELD NAME="PROJ_END_YEAR" TYPE="NUMBER" LABEL="project.end_year" WIDTH="0"/>
|
||||||
|
<FIELD NAME="PROJ_FOR_STAFF" TYPE="NUMBER" LABEL="project.for_staff" WIDTH="0"/>
|
||||||
|
<FIELD NAME="PROJ_ALL_STAFF" TYPE="NUMBER" LABEL="project.all_staff" WIDTH="0"/>
|
||||||
|
<FIELD NAME="PROJ_TYPE" TYPE="TEXT" LABEL="project.type" WIDTH="15"/>
|
||||||
|
<FIELD NAME="PROJ_FROM_YEAR" TYPE="NUMBER" LABEL="project.from_year" WIDTH="0"/>
|
||||||
|
<FIELD NAME="PROJ_PRINCIPLES" TYPE="TEXT" LABEL="project.principles" WIDTH="2000"/>
|
||||||
|
<FIELD NAME="PROJ_OBJECTIVE" TYPE="TEXT" LABEL="project.objective" WIDTH="2000"/>
|
||||||
|
<FIELD NAME="PROJ_BENEFIT" TYPE="TEXT" LABEL="project.benefit" WIDTH="2000"/>
|
||||||
|
<FIELD NAME="PROJ_GOLD" TYPE="TEXT" LABEL="project.gold" WIDTH="2000"/>
|
||||||
|
<FIELD NAME="PROJ_TAGET_GROUP" TYPE="TEXT" LABEL="project.taget_group" WIDTH="2000"/>
|
||||||
|
<FIELD NAME="PROJ_LOCATION" TYPE="TEXT" LABEL="project.location" WIDTH="350"/>
|
||||||
|
<FIELD NAME="PROJ_ACTIVITY" TYPE="TEXT" LABEL="project.activity" WIDTH="2000"/>
|
||||||
|
<FIELD NAME="PROJ_PHASE" TYPE="TEXT" LABEL="project.phase" WIDTH="50"/>
|
||||||
|
<FIELD NAME="PROJ_MONITORING" TYPE="TEXT" LABEL="project.monitoring" WIDTH="2000"/>
|
||||||
|
</FIELDS>
|
||||||
|
</DATASET>
|
||||||
@@ -34,6 +34,7 @@ public class GUtils {
|
|||||||
TYPE_MAPPING.put("float", "NUMBER");
|
TYPE_MAPPING.put("float", "NUMBER");
|
||||||
TYPE_MAPPING.put("integer", "NUMBER");
|
TYPE_MAPPING.put("integer", "NUMBER");
|
||||||
TYPE_MAPPING.put("numeric", "NUMBER");
|
TYPE_MAPPING.put("numeric", "NUMBER");
|
||||||
|
TYPE_MAPPING.put("number", "NUMBER");
|
||||||
TYPE_MAPPING.put("smallint", "NUMBER");
|
TYPE_MAPPING.put("smallint", "NUMBER");
|
||||||
TYPE_MAPPING.put("timestamp", "DATE");
|
TYPE_MAPPING.put("timestamp", "DATE");
|
||||||
TYPE_MAPPING.put("text", "STRING");
|
TYPE_MAPPING.put("text", "STRING");
|
||||||
@@ -80,7 +81,7 @@ public class GUtils {
|
|||||||
|
|
||||||
public static String getFieldType(DasColumn column) {
|
public static String getFieldType(DasColumn column) {
|
||||||
String columnType = column.getDasType().toDataType().typeName;
|
String columnType = column.getDasType().toDataType().typeName;
|
||||||
String fieldType = TYPE_MAPPING.get(columnType);
|
String fieldType = TYPE_MAPPING.get(columnType.toLowerCase());
|
||||||
if (fieldType == null) {
|
if (fieldType == null) {
|
||||||
fieldType = TYPE_MAPPING.getOrDefault(userDefType.getOrDefault(columnType, "varchar"), "Object");
|
fieldType = TYPE_MAPPING.getOrDefault(userDefType.getOrDefault(columnType, "varchar"), "Object");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user