feat: implement Dataset XML generation and Action Models V3

- Added 'Generate Dataset XML' feature to automate table definitions from database schema.
- Implemented intelligent label generation (prioritizing comments) and automatic type mapping for XML.
- Added 'Generate Action Models V3' supporting the new sdk.db package structure.
- Updated release notes and bumped version to 2.1.0.
- Registered new actions with keyboard shortcuts in plugin.xml.
This commit is contained in:
2026-02-27 12:33:58 +07:00
parent c40ce04f73
commit d501ecec22
12 changed files with 313 additions and 50 deletions

View File

@@ -11,26 +11,37 @@
]]></description>
<change-notes><![CDATA[
## [1.1.2]
fix: Update plugin version display
Corrected the plugin version display in the IDE.
## [1.1.1]
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.
## Release Notes
### New Features and Enhancements
* **DTO Generation:** Introduced new functionality to generate Data Transfer Object (DTO) classes alongside ActionBeans. This includes new FreeMarker templates (`actionDTO.ftl`, `actionDTO.extend.ftl`) and updated logic in `GeneratorServices.java`.
* **ActionField and DTOField Enhancements:** Implemented enhancements related to the generation of `ActionField` and `DTOField` within the generated classes.
### Refactoring and Improvements
* **Project Structure Refactoring:** The project structure has been reorganized. Generator-related classes were moved to a new package (`com.sdk.generators.actionmodels`), and template directory names were standardized to `src/main/resources/templates`.
* **Build System Updates:** Updated `build.gradle.kts`, `plugin.xml`, and Gradle wrapper files to reflect the structural and functional enhancements.
<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>
]]></change-notes>
<depends>com.intellij.modules.platform</depends>
@@ -46,6 +57,21 @@
<add-to-group group-id="DatabaseViewPopupMenu" anchor="first"/>
<keyboard-shortcut keymap="$default" first-keystroke="ctrl alt G"/>
</action>
<!-- Defines an action that will appear in the context menu for project directories -->
<action id="com.sdk.generators.actionmodels.GenerateBeanAction.v3"
class="com.sdk.generators.actionmodels.GenerateBeanActionV3"
text="Generate Action Models V3"
description="Generates ActionBean classes from a database schema V3 (sdk.db.xxx).">
<add-to-group group-id="DatabaseViewPopupMenu" anchor="after" relative-to-action="com.sdk.generators.actionmodels.GenerateBeanAction"/>
<keyboard-shortcut keymap="$default" first-keystroke="ctrl alt H"/>
</action>
<action id="com.sdk.generators.actionmodels.GenerateDatasetAction"
class="com.sdk.generators.actionmodels.GenerateDatasetAction"
text="Generate Dataset XML"
description="Generates Dataset XML definition from a database table.">
<add-to-group group-id="DatabaseViewPopupMenu" anchor="after" relative-to-action="com.sdk.generators.actionmodels.GenerateBeanAction.v3"/>
<keyboard-shortcut keymap="$default" first-keystroke="ctrl alt J"/>
</action>
</actions>
<!-- in plugin.xml, inside the <extensions defaultExtensionNs="com.intellij"> tag -->