feat: implement project-level XSD registration and refactor base package
- Schema Validation (XSD): - Added new configuration UI for DynamicForm Tools to manage XSD schemas. - Implemented DynFormXsdScanner to automatically map local .xsd files to the ExternalResourceManager using a custom URI prefix. - Ensured XSD registration is properly scoped at the Project-level (rather than Application-level) using write-actions to comply with IDE threading policies. - Architecture & Refactoring: - Renamed base package from com.sdk.dynformTools to com.sdk.dynform across the entire project for structural consistency. - Converted Application-level settings/configurables to Project-level services. - Extracted and restored complex I18n folding and inlay hint logic that was previously overwritten, adapting it to use the new Project-level settings. - UI & Metadata: - Bumped plugin version to 3.2.0. - Rebranded settings page to "DynamicForm Tools". - Organized settings into logical "Internationalization" and "Schema Validation" groups.
This commit is contained in:
127
DevResources/xsd/ajax.xsd
Executable file
127
DevResources/xsd/ajax.xsd
Executable file
@@ -0,0 +1,127 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema attributeFormDefault="unqualified"
|
||||
elementFormDefault="qualified"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="DATASETS" type="DATASETSType"/>
|
||||
<xs:complexType name="DATASETSType">
|
||||
<xs:sequence>
|
||||
<xs:element type="DATASETType" name="DATASET" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="FieldDataType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AUTO"/>
|
||||
<xs:enumeration value="NUMBER"/>
|
||||
<xs:enumeration value="NUMERIC"/>
|
||||
<xs:enumeration value="VARCHAR"/>
|
||||
<xs:enumeration value="VARCHAR2"/>
|
||||
<xs:enumeration value="TEXT"/>
|
||||
<xs:enumeration value="DATE"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="FieldKind">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="VIEW"/>
|
||||
<xs:enumeration value="DATA"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="YesNo">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Y"/>
|
||||
<xs:enumeration value="N"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="AlignmentType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="left"/>
|
||||
<xs:enumeration value="center"/>
|
||||
<xs:enumeration value="right"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="SQLType">
|
||||
<xs:all>
|
||||
<xs:element type="xs:string" name="SELECT"/>
|
||||
<xs:element type="xs:string" name="FROM"/>
|
||||
<xs:element type="xs:string" name="WHERE" minOccurs="0"/>
|
||||
<xs:element type="xs:string" name="FILTER" minOccurs="0"/>
|
||||
<xs:element type="xs:string" name="GROUP" minOccurs="0"/>
|
||||
<xs:element type="xs:string" name="HAVING" minOccurs="0"/>
|
||||
<xs:element type="xs:string" name="ORDER" minOccurs="0"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- <xs:complexType name="SQLType">-->
|
||||
<!-- <xs:sequence>-->
|
||||
<!-- <xs:element type="xs:string" name="SELECT"/>-->
|
||||
<!-- <xs:element type="xs:string" name="FROM"/>-->
|
||||
<!-- <xs:element type="xs:string" name="WHERE"/>-->
|
||||
<!-- <xs:element type="xs:string" name="GROUP"/>-->
|
||||
<!-- <xs:element type="xs:string" name="ORDER"/>-->
|
||||
<!-- </xs:sequence>-->
|
||||
<!-- </xs:complexType>-->
|
||||
|
||||
<xs:complexType name="SUBDATASETType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute type="xs:string" name="NAME"/>
|
||||
<xs:attribute type="xs:string" name="DATASET-ID"/>
|
||||
<xs:attribute type="xs:string" name="MASTER-FIELDS"/>
|
||||
<xs:attribute type="xs:string" name="DETAIL-FIELDS"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="FIELD-GROUPType">
|
||||
<xs:sequence>
|
||||
<xs:element type="FIELDType" name="FIELD" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="SUBDATASETSType">
|
||||
<xs:sequence>
|
||||
<xs:element type="SUBDATASETType" name="SUBDATASET" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="FIELDType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute type="xs:string" name="NAME" use="optional"/>
|
||||
<xs:attribute type="xs:string" name="LABEL" use="optional"/>
|
||||
<xs:attribute type="xs:string" name="CAPTION" use="optional"/>
|
||||
<xs:attribute type="FieldDataType" name="TYPE" use="optional"/>
|
||||
<xs:attribute type="xs:string" name="SORT" use="optional"/>
|
||||
<xs:attribute type="FieldKind" name="KIND" use="optional"/>
|
||||
<xs:attribute type="YesNo" name="WARP" use="optional"/>
|
||||
<xs:attribute type="xs:string" name="WIDTH" use="optional"/>
|
||||
<xs:attribute type="AlignmentType" name="ALIGN" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="FIELDSType">
|
||||
<xs:sequence>
|
||||
<xs:element type="FIELDType" name="FIELD" maxOccurs="unbounded" minOccurs="0"/>
|
||||
<xs:element type="FIELD-GROUPType" name="DATA-FIELDS" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element type="FIELD-GROUPType" name="VIEW-FIELDS" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="DATASETType">
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:string" name="SCHEMA"/>
|
||||
<xs:element type="xs:string" name="TABLEDESC" minOccurs="0"/>
|
||||
<xs:element type="xs:integer" name="MAXROWS" minOccurs="0"/>
|
||||
<xs:element type="SQLType" name="SQL"/>
|
||||
<xs:element type="FIELDSType" name="FIELDS" minOccurs="0"/>
|
||||
<xs:element type="SUBDATASETSType" name="SUBDATASETS" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="ID" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
</xs:schema>
|
||||
1349
DevResources/xsd/dynf-form-def.xsd
Executable file
1349
DevResources/xsd/dynf-form-def.xsd
Executable file
File diff suppressed because it is too large
Load Diff
118
DevResources/xsd/lovdef.xsd
Executable file
118
DevResources/xsd/lovdef.xsd
Executable file
@@ -0,0 +1,118 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
|
||||
<xs:simpleType name="FieldDataType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="NUMBER"/>
|
||||
<xs:enumeration value="STRING"/>
|
||||
<xs:enumeration value="DATE"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="FieldKind">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="VIEW"/>
|
||||
<xs:enumeration value="DATA"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="YesNo">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Y"/>
|
||||
<xs:enumeration value="N"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="AlignmentType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="left"/>
|
||||
<xs:enumeration value="center"/>
|
||||
<xs:enumeration value="right"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="SelectorType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="none"/>
|
||||
<xs:enumeration value="checkbox"/>
|
||||
<xs:enumeration value="radio"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="AdvSearchFlagType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="NO"/>
|
||||
<xs:enumeration value="EQ"/>
|
||||
<xs:enumeration value="LT"/>
|
||||
<xs:enumeration value="GT"/>
|
||||
<xs:enumeration value="BT"/>
|
||||
<xs:enumeration value="LTE"/>
|
||||
<xs:enumeration value="GTE"/>
|
||||
<xs:enumeration value="LIKE"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:element name="LOVS" type="LOVSType"/>
|
||||
<xs:complexType name="HEADERType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute type="YesNo" name="NAVI"/>
|
||||
<xs:attribute type="YesNo" name="SEARCH"/>
|
||||
<xs:attribute type="SelectorType" name="SELECTOR"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent> </xs:complexType>
|
||||
|
||||
<xs:complexType name="LOVType">
|
||||
<xs:sequence>
|
||||
<xs:element type="HEADERType" name="HEADER"/>
|
||||
<xs:element type="xs:string" name="FOOTER"/>
|
||||
<xs:element type="xs:string" name="DESCRIPTION"/>
|
||||
<xs:element type="xs:string" name="KEYFIELDS"/>
|
||||
<xs:element type="xs:string" name="SORTFIELDS"/>
|
||||
<xs:element type="xs:string" name="PAGESIZE"/>
|
||||
<xs:element type="FIELDSType" name="FIELDS"/>
|
||||
<xs:element name="SCRIPT" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType mixed="true">
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:string" name="DECLARETION" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element type="xs:string" name="INITIALIZE" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="ID" use="required"/>
|
||||
<xs:attribute type="xs:string" name="DATAID" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="FIELDType">
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:string" name="HEADER"/>
|
||||
<xs:element type="xs:string" name="TEMPLATE" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="NAME" use="required"/>
|
||||
<xs:attribute type="xs:string" name="LABEL" use="required"/>
|
||||
<xs:attribute type="FieldDataType" name="TYPE" use="optional"/>
|
||||
<xs:attribute type="xs:string" name="WIDTH" use="optional"/>
|
||||
<xs:attribute type="AlignmentType" name="ALIGN" use="optional"/>
|
||||
<xs:attribute type="xs:string" name="FORMAT" use="optional"/>
|
||||
<xs:attribute type="YesNo" name="SEARCH" use="optional"/>
|
||||
<xs:attribute type="xs:string" name="SEARCH_ORIGIN" use="optional"/>
|
||||
<xs:attribute type="AdvSearchFlagType" name="ADV_SEARCH" use="optional"/>
|
||||
<xs:attribute type="xs:string" name="ADV_ORIGIN" use="optional"/>
|
||||
<xs:attribute type="FieldDataType" name="ADV_TYPE" use="optional"/>
|
||||
<xs:attribute type="YesNo" name="SORT" use="optional"/>
|
||||
<xs:attribute type="xs:string" name="SORT_ORIGIN" use="optional"/>
|
||||
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="FIELDSType">
|
||||
<xs:sequence>
|
||||
<xs:element type="FIELDType" name="FIELD" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LOVSType">
|
||||
<xs:sequence>
|
||||
<xs:element type="LOVType" name="LOV" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
185
DevResources/xsd/system-config.xsd
Normal file
185
DevResources/xsd/system-config.xsd
Normal file
@@ -0,0 +1,185 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="Application" type="ApplicationType"/>
|
||||
|
||||
<xs:simpleType name="YesNoType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Y"/>
|
||||
<xs:enumeration value="N"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="LocaleType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="th"/>
|
||||
<xs:enumeration value="en"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="FormReloadType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AUTO"/>
|
||||
<xs:enumeration value="FORCE"/>
|
||||
<xs:enumeration value="OFF"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="DBProviderType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="ORACLE"/>
|
||||
<xs:enumeration value="MYSQL"/>
|
||||
<xs:enumeration value="MSSQL"/>
|
||||
<xs:enumeration value="PGSQL"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="OracleConnectionMode">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DIRECT"/>
|
||||
<xs:enumeration value="TNS-STRING"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="DBTimeZoneType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="UTC"/>
|
||||
<xs:enumeration value="Asia/Bangkok"/>
|
||||
<xs:enumeration value="+1"/>
|
||||
<xs:enumeration value="+2"/>
|
||||
<xs:enumeration value="+3"/>
|
||||
<xs:enumeration value="+4"/>
|
||||
<xs:enumeration value="+5"/>
|
||||
<xs:enumeration value="+6"/>
|
||||
<xs:enumeration value="+7"/>
|
||||
<xs:enumeration value="+8"/>
|
||||
<xs:enumeration value="+9"/>
|
||||
<xs:enumeration value="+10"/>
|
||||
<xs:enumeration value="+11"/>
|
||||
<xs:enumeration value="+12"/>
|
||||
<xs:enumeration value="-1"/>
|
||||
<xs:enumeration value="-2"/>
|
||||
<xs:enumeration value="-3"/>
|
||||
<xs:enumeration value="-4"/>
|
||||
<xs:enumeration value="-5"/>
|
||||
<xs:enumeration value="-6"/>
|
||||
<xs:enumeration value="-7"/>
|
||||
<xs:enumeration value="-8"/>
|
||||
<xs:enumeration value="-9"/>
|
||||
<xs:enumeration value="-10"/>
|
||||
<xs:enumeration value="-11"/>
|
||||
<xs:enumeration value="-12"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="ConfigType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute type="xs:string" name="Name"/>
|
||||
<xs:attribute type="xs:string" name="Title"/>
|
||||
<xs:attribute type="YesNoType" name="DevMode"/>
|
||||
<xs:attribute type="xs:anyURI" name="RootUrl"/>
|
||||
<xs:attribute type="xs:string" name="TokenKey"/>
|
||||
<xs:attribute type="xs:string" name="SignOnPage"/>
|
||||
<xs:attribute type="xs:string" name="LandingPage"/>
|
||||
<xs:attribute type="FormReloadType" name="FormReload"/>
|
||||
<xs:attribute type="LocaleType" name="DefaultLocale"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ModuleType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute type="xs:string" name="Name" use="optional"/>
|
||||
<xs:attribute type="YesNoType" name="NeedAuthen" use="optional"/>
|
||||
<xs:attribute type="xs:string" name="Renderer" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ModulesType">
|
||||
<xs:sequence>
|
||||
<xs:element type="ModuleType" name="Module" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ConnectorType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute type="xs:string" name="Name" use="required"/>
|
||||
<xs:attribute type="xs:string" name="Schema" use="required"/>
|
||||
<xs:attribute type="YesNoType" name="UsePools"/>
|
||||
<xs:attribute type="xs:byte" name="Size"/>
|
||||
<xs:attribute type="xs:byte" name="Preserv"/>
|
||||
<xs:attribute type="xs:byte" name="Timeout"/>
|
||||
<xs:attribute type="YesNoType" name="SendHeartBeat"/>
|
||||
<xs:attribute type="xs:string" name="Username"/>
|
||||
<xs:attribute type="xs:string" name="Password"/>
|
||||
<xs:attribute type="YesNoType" name="Debug"/>
|
||||
<xs:attribute type="YesNoType" name="PoolDebug"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DatabaseType">
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:string" name="TNS-String" minOccurs="0"/>
|
||||
<xs:element type="ConnectorType" name="Connector" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="Name"/>
|
||||
<xs:attribute type="xs:string" name="Server"/>
|
||||
<xs:attribute type="DBTimeZoneType" name="TimeZone"/>
|
||||
<xs:attribute type="DBProviderType" name="Provider"/>
|
||||
<xs:attribute type="OracleConnectionMode" name="Mode"/>
|
||||
<xs:attribute type="xs:string" name="Database"/>
|
||||
<xs:attribute type="xs:short" name="Port"/>
|
||||
<xs:attribute type="xs:string" name="Username"/>
|
||||
<xs:attribute type="xs:string" name="Password"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="DatabasesType">
|
||||
<xs:sequence>
|
||||
<xs:element type="DatabaseType" name="Database" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="ParameterType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute type="xs:string" name="name" use="optional"/>
|
||||
<xs:attribute type="xs:string" name="value" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="APIType">
|
||||
<xs:sequence>
|
||||
<xs:element type="ParameterType" name="Parameter" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="Name" use="optional"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="APISType">
|
||||
<xs:sequence>
|
||||
<xs:element type="APIType" name="API" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="UploadFileType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute type="xs:string" name="Name" use="required"/>
|
||||
<xs:attribute type="xs:string" name="Path" use="required"/>
|
||||
<xs:attribute type="xs:string" name="MaxPixel" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="UploadsType">
|
||||
<xs:sequence>
|
||||
<xs:element type="UploadFileType" name="FileType" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="ApplicationType">
|
||||
<xs:sequence >
|
||||
<xs:element type="ConfigType" name="Config"/>
|
||||
<xs:element type="ModulesType" name="Modules"/>
|
||||
<xs:element type="DatabasesType" name="Databases"/>
|
||||
<xs:element type="UploadsType" name="Uploads"/>
|
||||
<xs:element type="APISType" name="APIs"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
Reference in New Issue
Block a user