• 自动脚本工具新版 v2.0


    自动脚本工具 下载

    下载工具后,解压,直接双击 "execute.bat" 文件后(前提已配置好 jdk 1.7 的环境),会生成文件夹 "output",该文件夹下会有生成的对应语言的脚本。

    你也可以先尝试修改文件 “config_example.xml” 的配置项,再运行 "execute.bat",看 "output" 文件夹下的文件有什么变化,对于程序员来说应该是很简单的东西了。

    新版本支持同步输出 as3(对象+宏), java(对象+宏), c#(对象+宏), mysql(对象), js(宏), lua(宏) 的脚本了。

    工具主要目的就是输出不同目标语言下相同的数据对象类定义,和宏类定义。配置详细

    [type] 支持的 type 类型 
    |---boolean : 布尔
    |---integer8 : 8 位整型
    |---integer16 : 16 位整型
    |---integer32 : 32 位整型
    |---integer64 : 64 位整型
    |---decimal32 : 32 位小数
    |---decimal64 : 64 位小数
    |---string : 字符串
    |---array : 数组,默认泛型类型为 object
    |---dictionary : 字典,默认泛型类型为 object
    |---date : 日期
    |---object : 基类型
    
    [value] 对应 type 类型支持的默认值
    |---boolean : true/false 真/假
    |---string : 非 null 时,输出会自动添加引号
    |---date, array, dictionary : new 构造对象
    |---object : null 空值
    
    [Macros][group]
    |---宏的分组,当不指定宏类型时,则被系统归为分组中,自动指定类型为 integer32,指定一个系统值
    |---值结构为 0x7FFFFFFF,从左到右,第0位始终为0,第1-11位表示所在的组,第12-31表示宏值。如 宏 0x00100001 表示该宏在分组 1 (第 1-11 位 : 0x001) 中,值为 1 (第 12-31 位 : 0x00001)
    |---分组不能嵌套
    
    [AutoScript] 以包为单位定义对象和宏
    |---package : 默认包路径 - 非必需
    |---packageAs3 : as3 包路径,如果未指定,则使用 package - 非必需
    |---packageJava : java 包路径,如果未指定,则使用 package - 非必需
    |---packageNet : c# 包路径,如果未指定,则使用 package - 非必需
    |---packageDB : mysql 数据库名,如果未指定,则使用 package 的最内层包名,如果也未指定,则系统默认为 dbScript - 非必需
    |---packageJS : js 包路径,如果未指定,则使用 package - 非必需
    |---packageLua : lua 包路径,如果未指定,则使用 package - 非必需
    |---[Object] 对象数据
    	|---name : 对象数据类名(即文件名), - 必需
    	|---extend : 基类 - 非必需
    	|---note : 对象数据注释 - 非必需
    	|---nameTable : 该对象数据对应的 mysql 表名,如果未指定,则使用 name - 非必需
    	|---autoIncrement : mysql 中主键自增起始值 - 非必需
    	|---[ImportAs3][ImportJava][ImportNet] 对象数据需要引用的其它对象
    		|---value : 引用的对象完整包路径+类名,如 java.util.Date - 必需
    	|---[Property] 对象数据属性
    		|---name : 属性名,c# 输出时会首字母大写 - 必需
    		|---type : 属性默认类型,指定类型见 [type],如果指定为不支持的类型,则原样输出 - 非必需
    		|---value : 属性默认值,特殊值见 [value],其它值则会原样输出 - 非必需
    		|---note : 属性注释 - 非必需
    		|---typeAs3 : as3 属性类型(原样输出类型和指定的值),如果未指定,则使用 type - 非必需
    		|---valueAs3 : as3 属性围住值,如果未指定,则使用 value - 非必需
    		|---typeJava : java 属性类型(原样输出类型和指定的值),如果未指定,则使用 type - 非必需
    		|---valueJava : java 属性默认值,如果未指定,则使用 value - 非必需
    		|---typeNet : c# 属性类型(原样输出类型和指定的值),如果未指定,则使用 type - 非必需
    		|---valueNet : c# 属性默认值,如果未指定,则使用 value - 非必需
    		|---typeDB : mysql 字段类型(原样输出类型和指定的值),如果未指定,则使用 type - 非必需
    		|---valueDB : mysql 字段默认值,如果未指定,则使用 value - 非必需
    		|---restrictDB : mysql 字段约束,如 NOT NULL - 非必需
    |---[Macros] 一组宏的定义,该定义下的直系 [Macro] 占用第 1 个分组
    	|---name : 宏类名(即文件名) - 必需
    	|---groupStart : 指定分组的起始序号,最小值为 0
    	|---groupEnd : 指定分组的结束序号,如果小于 groupStart,则默认为 0x7FF
    	|---note : 宏类注释 - 非必需
    	|---[Macro] 宏
    		|---name : 宏名 - 必需
    		|---type : 宏类型,指定类型见 [type],如果指定为不支持的类型,则原样输出 - 非必需
    		|---value : 宏默认值,特殊值见 [value],其它值则会原样输出 - 非必需
    		|---note : 宏注释
    	|---[Group] 宏分组,同 [Macro] 定义一样会生成一个宏,如果不指定类型,则系统指定的值结构为:分组位为当前分组,值部分为0
    		|---name : 分组(宏)名
    		|---type : 分组(宏)类型,指定类型见 [type],如果指定为不支持的类型,则原样输出 - 非必需
    		|---value : 分组(宏)默认值,特殊值见 [value],其它值则会原样输出 - 非必需
    		|---note : 分组(宏)注释
    		|---[Macro] 分组中的宏

    配置模板

     1 <AutoScript package="" packageAs3="" packageJava="" packageNet="" packageDB="" packageJS="" packageLua="">
     2 
     3     <Object name="" extend="" note="" nameTable="" autoIncrement="">
     4         <ImportAs3 value=""/>
     5         <ImportJava value=""/>
     6         <ImportNet value=""/>
     7         <Property name="" type="" value="" note="" typeAs3="" valueAs3="" typeJava="" valueJava="" typeNet="" valueNet="" typeDB="" valueDB="" restrictDB=""/>
     8     </Object>
     9     
    10     <Macros name="" groupStart="" groupEnd="" note="">
    11         <Macro name="" type="" value="" note=""/>
    12         <Group name="" type="" value="" note="">
    13             <Macro name="" type="" value="" note=""/>
    14         </Group>
    15     </Macros>
    16 
    17 </AutoScript>

    批文件模板

     1 @echo off
     2 
     3 java -classpath ./libs/*; AutoScript ^
     4 -config ./config_example.xml ^
     5 -pathAs3 ./output/as3/ ^
     6 -pathJava ./output/java/ ^
     7 -pathNet ./output/net/ ^
     8 -net2one netLib ^
     9 -pathDB ./output/mysql/ ^
    10 -pathJS ./output/js/ ^
    11 -pathLua ./output/lua/
    12 
    13 pause
    14 
    15 @echo on
    16 exit
    17 
    18 
    19 ::输出配置文件中的对象数据和宏
    20 ::-config 后可以指定多个配置文件,如 -config config_a.xml config_b.xml
    21 ::-pathAs3 输出 as3 文件路径(如果需要输出 as3 脚本)
    22 ::-pathJava 输出 java 文件路径(如果需要输出 java 脚本)
    23 ::-pathNet 输出 c# 文件路径(如果需要输出 c# 脚本)
    24 ::-net2one 如果指定的话,将会把每一个配置文件(如 config_a.xml)里的所有对象(节点 Object)输出到一个 .cs 文件中 。后接 .cs 文件名(数量与 -config 指定的文件数量一一对应),如 -config ./configA.xml ./configB.xml -net2one a b,将会输出 a.cs 和 b.cs 文件
    25 ::-pathDB 输出 mysql 脚本文件路径(如果需要输出 mysql 脚本)
    26 ::-pathJS 输出 js 文件路径(如果需要输出 js 脚本)
    27 ::-pathLua 输出 lua 文件路径(如果需要输出 lua 脚本)

    比如:客户端与服务端需要统一请求和返回命令、错误码之类的,就可以只需要维护宏定义配置文件。直接输出客户端和服务端的宏定义类。

     1 <Macros name="ReqRsp" groupStart="1" groupEnd="100" note="请求返回命令">
     2     <Macro name="WELCOME" type="string" value="欢迎使用"/>
     3     <Macro name="ERROR_PASSWORD" type="integer32" value="1" note="密码错误"/>
     4     
     5     <Group name="Register" note="注册">
     6         <Macro name="register_req" note="注册账号请求"/>
     7         <Macro name="register_rsp" note="注册请求返回"/>
     8     </Group>
     9 </Macros>
    10 <Macros name="Errors" groupStart="101" groupEnd="200" note="错误码">
    11     <Macro name="WELCOME" type="string" value="欢迎使用"/>
    12     <Macro name="ERROR_PASSWORD" type="integer32" value="1" note="密码错误"/>
    13     
    14     <Group name="Register" note="注册">
    15         <Macro name="username_existed" note="登录名已存在"/>
    16         <Macro name="email_necessary" note="需要填写电子邮箱"/>
    17     </Group>
    18 </Macros>
    配置宏示例
     1 package com.test
     2 {
     3 
     4     /** 请求返回命令 */
     5     public class ReqRsp
     6     {
     7 
     8         static public const WELCOME:String = "欢迎使用";
     9         /** 密码错误 */
    10         static public const ERROR_PASSWORD:int = 1;
    11 
    12         /** 注册 */
    13         static public const REGISTER:int = 2097152;
    14         /** 注册账号请求 */
    15         static public const REGISTER_REQ:int = 2097153;
    16         /** 注册请求返回 */
    17         static public const REGISTER_RSP:int = 2097154;
    18 
    19     }
    20 }
    输出 as3 ReqRsp
     1 package com.test
     2 {
     3 
     4     /** 错误码 */
     5     public class Errors
     6     {
     7 
     8         static public const WELCOME:String = "欢迎使用";
     9         /** 密码错误 */
    10         static public const ERROR_PASSWORD:int = 1;
    11 
    12         /** 注册 */
    13         static public const REGISTER:int = 106954752;
    14         /** 登录名已存在 */
    15         static public const USERNAME_EXISTED:int = 106954753;
    16         /** 需要填写电子邮箱 */
    17         static public const EMAIL_NECESSARY:int = 106954754;
    18 
    19     }
    20 }
    输出 as3 Errors
     1 package com.test;
     2 
     3 /** 请求返回命令 */
     4 public class ReqRsp {
     5     
     6     static public final String WELCOME = "欢迎使用";
     7     /** 密码错误 */
     8     static public final int ERROR_PASSWORD = 1;
     9 
    10     /** 注册 */
    11     static public final int REGISTER = 2097152;
    12     /** 注册账号请求 */
    13     static public final int REGISTER_REQ = 2097153;
    14     /** 注册请求返回 */
    15     static public final int REGISTER_RSP = 2097154;
    16     
    17 }
    输出 java ReqRsp
     1 package com.test;
     2 
     3 /** 错误码 */
     4 public class Errors {
     5     
     6     static public final String WELCOME = "欢迎使用";
     7     /** 密码错误 */
     8     static public final int ERROR_PASSWORD = 1;
     9 
    10     /** 注册 */
    11     static public final int REGISTER = 106954752;
    12     /** 登录名已存在 */
    13     static public final int USERNAME_EXISTED = 106954753;
    14     /** 需要填写电子邮箱 */
    15     static public final int EMAIL_NECESSARY = 106954754;
    16     
    17 }
    输出 java Errors
     1 namespace com.test
     2 {
     3     /// <summary>
     4     /// 请求返回命令
     5     /// </summary>
     6     public class ReqRsp
     7     {
     8 
     9         public const System.String WELCOME = "欢迎使用";
    10         /// <summary>
    11         /// 密码错误
    12         /// </summary>
    13         public const System.Int32 ERROR_PASSWORD = 1;
    14 
    15         /// <summary>
    16         /// 注册
    17         /// </summary>
    18         public const System.Int32 REGISTER = 2097152;
    19         /// <summary>
    20         /// 注册账号请求
    21         /// </summary>
    22         public const System.Int32 REGISTER_REQ = 2097153;
    23         /// <summary>
    24         /// 注册请求返回
    25         /// </summary>
    26         public const System.Int32 REGISTER_RSP = 2097154;
    27 
    28     }
    29 }
    输出 c# ReqRsp
     1 namespace com.test
     2 {
     3     /// <summary>
     4     /// 错误码
     5     /// </summary>
     6     public class Errors
     7     {
     8 
     9         public const System.String WELCOME = "欢迎使用";
    10         /// <summary>
    11         /// 密码错误
    12         /// </summary>
    13         public const System.Int32 ERROR_PASSWORD = 1;
    14 
    15         /// <summary>
    16         /// 注册
    17         /// </summary>
    18         public const System.Int32 REGISTER = 106954752;
    19         /// <summary>
    20         /// 登录名已存在
    21         /// </summary>
    22         public const System.Int32 USERNAME_EXISTED = 106954753;
    23         /// <summary>
    24         /// 需要填写电子邮箱
    25         /// </summary>
    26         public const System.Int32 EMAIL_NECESSARY = 106954754;
    27 
    28     }
    29 }
    输出 c# Errors
     1 var com_test_ReqRsp = {
     2 
     3     "WELCOME" : "欢迎使用",  
     4     "ERROR_PASSWORD" : 1, // 密码错误 
     5 
     6     "REGISTER" : 2097152, // 注册 
     7     "REGISTER_REQ" : 2097153, // 注册账号请求 
     8     "REGISTER_RSP" : 2097154, // 注册请求返回 
     9 
    10 };
    输出 js ReqRsp
     1 var com_test_Errors = {
     2 
     3     "WELCOME" : "欢迎使用",  
     4     "ERROR_PASSWORD" : 1, // 密码错误 
     5 
     6     "REGISTER" : 106954752, // 注册 
     7     "USERNAME_EXISTED" : 106954753, // 登录名已存在 
     8     "EMAIL_NECESSARY" : 106954754, // 需要填写电子邮箱 
     9 
    10 };
    输出 js Errors
     1 com_test_ReqRsp = {
     2 
     3     ["WELCOME"] = "欢迎使用",  
     4     ["ERROR_PASSWORD"] = 1, -- 密码错误 
     5 
     6     ["REGISTER"] = 2097152, -- 注册 
     7     ["REGISTER_REQ"] = 2097153, -- 注册账号请求 
     8     ["REGISTER_RSP"] = 2097154, -- 注册请求返回 
     9 
    10 };
    输出 lua ReqRsp
     1 com_test_ReqRsp = {
     2 
     3     ["WELCOME"] = "欢迎使用",  
     4     ["ERROR_PASSWORD"] = 1, -- 密码错误 
     5 
     6     ["REGISTER"] = 2097152, -- 注册 
     7     ["REGISTER_REQ"] = 2097153, -- 注册账号请求 
     8     ["REGISTER_RSP"] = 2097154, -- 注册请求返回 
     9 
    10 };
    输出 lua Errors

     比如数据传输,像 as3 与 java 通信的 amf3 协议,可以传输对象。配置如下

    1 <Object name="VOUser" note="用户对象" nameTable="t_user">
    2     <Property name="id" type="integer32" note="标识" restrictDB="PRIMARY KEY"/>
    3     <Property name="isBoy" type="boolean" value="true"/>
    4     <Property name="dateTime" type="date" value="new"/>
    5 </Object>
    配置对象类示例
     1 package com.test
     2 {
     3     /** 用户对象 */
     4     public class VOUser
     5     {
     6     
     7         //============================================================================
     8         //PROPERTY
     9         //============================================================================
    10         private var _id:int;
    11         private var _isBoy:Boolean = true;
    12         private var _dateTime:Date = new Date();
    13         //============================================================================
    14         //CONSTRUCTOR
    15         //============================================================================
    16         public function VOUser() {}
    17         //============================================================================
    18         //GETTER_SETTER
    19         //============================================================================
    20         /** 标识 */
    21         public function get id():int { return _id; }
    22         /** @private */
    23         public function set id(value:int):void { this._id = value; }
    24 
    25         public function get isBoy():Boolean { return _isBoy; }
    26         public function set isBoy(value:Boolean):void { this._isBoy = value; }
    27 
    28         public function get dateTime():Date { return _dateTime; }
    29         public function set dateTime(value:Date):void { this._dateTime = value; }
    30         
    31     }
    32 }
    输出 as3 VOUser
     1 package com.test;
     2 
     3 /** 用户对象 */
     4 public class VOUser {
     5 
     6     //============================================================================
     7     //PROPERTY
     8     //============================================================================
     9     private int id;
    10     private boolean isBoy = true;
    11     private java.util.Date dateTime = new java.util.Date();
    12     //============================================================================
    13     //CONSTRUCTOR
    14     //============================================================================
    15     public VOUser() {}
    16     //============================================================================
    17     //GETTER_SETTER
    18     //============================================================================
    19     /** 标识 */
    20     public int getId() { return id; }
    21     /** 标识 */
    22     public void setId(int value) { this.id = value; }
    23 
    24     public boolean getIsBoy() { return isBoy; }
    25     public void setIsBoy(boolean value) { this.isBoy = value; }
    26 
    27     public java.util.Date getDateTime() { return dateTime; }
    28     public void setDateTime(java.util.Date value) { this.dateTime = value; }
    29 
    30 }
    输出 java VOUser
     1 namespace com.test
     2 {
     3     /// <summary>
     4     /// 用户对象
     5     /// </summary>
     6     public class VOUser
     7     {
     8         //============================================================================
     9         //PROPERTY
    10         //============================================================================
    11         private System.Int32 _id;
    12         private System.Boolean _isBoy = true;
    13         private System.DateTime _dateTime = System.DateTime.Now;
    14         //============================================================================
    15         //CONSTRUCTOR
    16         //============================================================================
    17         public VOUser() {}
    18         //============================================================================
    19         //GETTER_SETTER
    20         //============================================================================
    21         /// <summary>
    22         /// 标识
    23         /// </summary>
    24         public System.Int32 Id
    25         {
    26             get { return _id; }
    27             set { this._id = value; }
    28         }
    29 
    30         public System.Boolean IsBoy
    31         {
    32             get { return _isBoy; }
    33             set { this._isBoy = value; }
    34         }
    35 
    36         public System.DateTime DateTime
    37         {
    38             get { return _dateTime; }
    39             set { this._dateTime = value; }
    40         }
    41 
    42     }
    43 }
    输出 c# VOUser
     1 DROP DATABASE IF EXISTS db_test;
     2 CREATE DATABASE db_test DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
     3 
     4 USE db_test;
     5 
     6 #----------------------------------------------------------------------------
     7 #用户对象
     8 DROP TABLE IF EXISTS t_user;
     9 CREATE TABLE t_user(
    10     id INT PRIMARY KEY COMMENT "标识"
    11     , isBoy TINYINT DEFAULT 1
    12     , dateTime DATETIME DEFAULT NULL
    13 )DEFAULT CHARSET = UTF8 COLLATE UTF8_GENERAL_CI;
    14 DESC t_user;
    输出 mysql 脚本
  • 相关阅读:
    【Java学习】常用DOS命令
    【Java学习】J2EE,J2SE,J2ME区别
    自考之旅(五)
    数据结构 思维导图
    信息系统开发与管理 思维导图
    win10系统定时自动切换深色模式
    精英都是细节控
    架构师培养计划——热身训练
    计算机网络原理 思维导图
    自考之旅(四)
  • 原文地址:https://www.cnblogs.com/idoublewei/p/4529935.html
Copyright © 2020-2023  润新知