Files
Dynamic-Form-Tools/build.gradle.kts
skidus 4da00c10e4 feat(dynform): enhance dataset and field referencing for master-detail structures
- Implemented comprehensive reference and completion support for <FOREIGN-DATASETS> and <MASTER-DATA> tags.
- Enhanced dataset resolution to support recursive scanning across included .frml files.
- Improved field resolution logic for MASTER-FIELDS and DETAIL-FIELDS to resolve from datasets specified by DATASET-ID or DATAID.
- Bumped plugin version to 3.2.3 and updated change notes.
2026-04-16 19:39:00 +07:00

154 lines
8.6 KiB
Plaintext

plugins {
id("java")
id("org.jetbrains.kotlin.jvm") version "2.1.0"
id("org.jetbrains.intellij.platform") version "2.7.0"
}
group = "com.sdk.dynform.tools"
version = "3.2.3"
repositories {
mavenCentral()
intellijPlatform {
defaultRepositories()
}
}
// Configure Gradle IntelliJ Plugin
// Read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html
dependencies {
intellijPlatform {
create("IU", "2025.1")
testFramework(org.jetbrains.intellij.platform.gradle.TestFrameworkType.Platform)
// Add necessary plugin dependencies for compilation here, example:
bundledPlugin("com.intellij.java")
bundledPlugin("com.intellij.database")
bundledPlugin("com.intellij.jsp")
bundledPlugin("JavaScript")
}
implementation("org.freemarker:freemarker:2.3.32")
}
intellijPlatform {
pluginConfiguration {
ideaVersion {
sinceBuild = "251"
}
changeNotes = """
<h2>[3.2.3]</h2>
<ul>
<li><strong>Advanced Data Referencing:</strong> Implemented comprehensive reference and completion support for <code>&lt;FOREIGN-DATASETS&gt;</code> and <code>&lt;MASTER-DATA&gt;</code> structures.</li>
<li><strong>Contextual Field Resolution:</strong> Enhanced field resolution logic to resolve fields from datasets specified by <code>DATASET-ID</code> and <code>DATAID</code> attributes within their respective tags.</li>
<li><strong>Recursive Resource Scanning:</strong> Improved dataset and grid scanning to search across recursively included <code>.frml</code> files, ensuring consistent navigation and completion throughout the project.</li>
</ul>
<h2>[3.2.2]</h2>
<ul>
<li><strong>UI/UX Improvement:</strong> Updated the I18n settings to allow selecting the message bundle XML file directly via a file browser, improving configuration usability.</li>
<li><strong>Core Enhancement:</strong> Modified I18nUtils to load message files via absolute paths from project settings, increasing reliability across different project structures.</li>
</ul>
<h2>[3.2.1]</h2>
<ul>
<li><strong>Bug Fix:</strong> Resolved a <code>ConcurrentModificationException</code> in the I18n cache mechanism caused by concurrent background thread access.</li>
</ul>
<h2>[3.2.0]</h2>
<ul>
<li><strong>Schema Validation:</strong> Introduced project-level automatic XSD registration. Configure a target folder and namespace prefix to seamlessly map <code>.xsd</code> files to the <code>ExternalResourceManager</code>.</li>
<li><strong>Architecture:</strong> Finalized rebranding by standardizing internal packages to <code>com.sdk.dynform.*</code> for better consistency.</li>
<li><strong>UI Improvement:</strong> Streamlined the plugin settings UI into distinct Internationalization and Schema Validation groups.</li>
</ul>
<h2>[3.1.0]</h2>
<ul>
<li><strong>Advanced Navigation:</strong> Implemented bidirectional field referencing between <code>&lt;FIELDS&gt;</code>, <code>&lt;LAYOUT&gt;</code>, and <code>&lt;TITLES&gt;</code> tags in <code>.frml</code> files.</li>
<li><strong>Cross-Module Support:</strong> Added support for cross-module file inclusion and referencing using <code>/module/path</code> and module-relative <code>#path</code> syntax.</li>
<li><strong>AJAX-OPTION Enhancements:</strong>
<ul>
<li>Reference and completion support for datasets defined in <code>defs/ajax.xml</code>.</li>
<li>Smart mapping for <code>SRC</code> (AJAX datasets) and <code>TARGET</code> (local form fields) attributes.</li>
</ul>
</li>
<li><strong>Robust Field Resolution:</strong> Enhanced deep recursive search for fields/sections within nested layouts (Sections, Rows, and Multi-field lists).</li>
<li><strong>Path Auto-Correction:</strong> Added handling for common keyboard typos (e.g., Thai 'ิ' instead of '/') in file paths.</li>
<li><strong>Global Resource Scanning:</strong> <code>GRID-ID</code> now intelligently searches across all recursively included <code>.frml</code> files.</li>
</ul>
<h2>[3.0.1]</h2>
<ul>
<li><strong>Rebranding:</strong> Renamed plugin to "DynamicForm Tools" to better reflect its expanding capabilities.</li>
<li><strong>I18n Support:</strong> Added comprehensive tools for internationalization:
<ul>
<li>Inlay hints and code folding for i18n keys in Java, XML, and JavaScript.</li>
<li>Auto-completion and reference navigation for keys defined in <code>message.xml</code>.</li>
<li>Support for multiple message file locations and naming patterns.</li>
</ul>
</li>
<li><strong>DynForm Support:</strong> Introduced dedicated support for <code>.frml</code> files, including file type recognition and specialized completion helpers.</li>
<li><strong>Architecture Refactoring:</strong> Complete package reorganization to <code>com.sdk.dynform.tools</code> for better modularity.</li>
</ul>
<h2>[2.1.2]</h2>
<ul>
<li>Feature: Grouped database actions into a single "Generate Action Models" popup menu.</li>
<li>UI: Renamed base action to "Generate Action Models V2" to distinguish it from V3.</li>
<li>UI: Improved context menu organization by placing grouped actions at the top of the Database View menu.</li>
</ul>
<h2>[2.1.1]</h2>
<ul>
<li>Update: Case-insensitive column type mapping in GUtils.java.</li>
<li>Update: Add "number" type mapping support for broader database compatibility.</li>
<li>Resource: Added sample Dataset.xml in DevResources for reference.</li>
</ul>
<h2>[2.1.0]</h2>
<ul>
<li>Add: Generate Dataset XML feature to generate XML table definitions from database tables.</li>
<li>Feature: Intelligent label generation for XML datasets, prioritizing database column comments with fallback to entity-based keys.</li>
<li>Feature: Automatic mapping of database types to XML types (TEXT, NUMBER, DATE) and column width extraction.</li>
<li>Shortcut: Added <code>Ctrl + Alt + J</code> for the dataset generation action.</li>
</ul>
<h2>[2.0.1]</h2>
<ul>
<li>update : Refactory class structure of sdk.dbutils -> sdk.db.xxxx</li>
<li>Add : Generate for new class structure as V3 </li>
</ul>
<h2>[1.1.2]</h2>
<ul>
<li>fix: Handle databases that do not support user-defined types</li>
</ul>
<h2>[1.1.1]</h2>
<ul>
<li>fix: Correctly generate primary keys. The generator was failing to identify primary key columns, resulting in generated beans without them. This has been fixed by updating the code to use the `getColumnsRef()` method, which correctly retrieves the column names for the primary key.</li>
</ul>
<h2>[1.1.0]</h2>
<h3>New Features and Enhancements</h3>
<ul>
<li><strong>DTO Generation:</strong> Introduced new functionality to generate Data Transfer Object (DTO) classes alongside ActionBeans. This includes new FreeMarker templates (<code>actionDTO.ftl</code>, <code>actionDTO.extend.ftl</code>) and updated logic in <code>GeneratorServices.java</code>.</li>
<li><strong>ActionField and DTOField Enhancements:</strong> Implemented enhancements related to the generation of <code>ActionField</code> and <code>DTOField</code> within the generated classes.</li>
</ul>
<h3>Refactoring and Improvements</h3>
<ul>
<li><strong>Project Structure Refactoring:</strong> The project structure has been reorganized. Generator-related classes were moved to a new package (<code>com.sdk.generators.actionmodels</code>), and template directory names were standardized to <code>src/main/resources/templates</code>.</li>
<li><strong>Build System Updates:</strong> Updated <code>build.gradle.kts</code>, <code>plugin.xml</code>, and Gradle wrapper files to reflect the structural and functional enhancements.</li>
</ul>
"""
}
}
tasks {
// Set the JVM compatibility versions
withType<JavaCompile> {
sourceCompatibility = "21"
targetCompatibility = "21"
}
// signPlugin {
// certificateChain.set(System.getenv("CERTIFICATE_CHAIN"))
// privateKey.set(System.getenv("PRIVATE_KEY"))
// password.set(System.getenv("PRIVATE_KEY_PASSWORD"))
// }
//
// publishPlugin {
// token.set(System.getenv("PUBLISH_TOKEN"))
// }
}