zoukankan      html  css  js  c++  java
  • 自动脚本工具新版 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 脚本
  • 相关阅读:
    实用机器学习 跟李沐学AI
    Explicitly drop temp table or let SQL Server handle it
    dotnettransformxdt and FatAntelope
    QQ拼音输入法 禁用模糊音
    (技术八卦)Java VS RoR
    Ruby on rails开发从头来(windows)(七)创建在线购物页面
    Ruby on rails开发从头来(windows)(十三)订单(Order)
    Ruby on rails开发从头来(windows)(十一)订单(Order)
    新员工自缢身亡,华为又站到了风口浪尖
    死亡汽油弹(Napalm Death)乐队的视频和来中国演出的消息
  • 原文地址:https://www.cnblogs.com/idoublewei/p/4529935.html
Copyright © 2011-2022 走看看