• Using X++ Modify Table and class name From AOT Project


    Wrote by Jimmy on DEC.2th 2010
    1)  create to a Customized table(class),table(class) name need to add the short for company Name referred to as the prefix;
        then table field/method name is not necessary add short for company name;
    2)  add the table field/method name need to add the short for company name referred to as a prefix on a system table or class

    using x++ code modify tableName and fieldName or className and classmethod name for define customization
    such as table name prefix "QVS_" as our  short name for company from AOT Private Project (Project1)

    代码
    static void Jimmy_ModifyTableAndClassFromProject(Args _args)
    {
    /***
    Wrote by Jimmy on DEC.2th 2010
    1) create to a Customized table(class),table(class) name need to add the short for company Name referred to as the prefix;
    then table field/method name is not necessary add short for company name;
    2) add the table field/method name need to add the short for company name referred to as a prefix on a system table or class

    using x++ code modify tableName and fieldName or className and classmethod name for define customization
    such as table name prefix "QVS_" as our short name for company from AOT Private Project (Project1)
    */
    #TreeNodeSysNodeType
    #define.prefix("QVS_")
    #define.ProjectName("Project1")
    ProjectGroupNode pNode;
    TreeNodeIterator projectIt;
    TreeNode projectListNode
    = SysTreeNode::getPrivateProject();
    ProjectNode projectNode
    = projectListNode.AOTfindChild(#ProjectName);

    //Only has current Layers?
    Boolean onlyCurrentLayer(TreeNode _treeNode)
    {
    int layers = _treeNode.applObjectLayerMask();
    UtilEntryLevel level;
    UtilEntryLevel currentLevel;
    int i,j=0;
    ;
    for(i=0;i<enumcnt(UtilEntryLevel);i++)
    {
    if (layers & (1 << i))
    {
    currentLevel
    = i;
    j
    ++;
    }
    }
    if(j == 1 && currentLevel == infolog.currentAOLayer())
    return true;
    return false;

    }
    //Modify Classes and Tables
    void modify(TreeNode _treeNode)
    {
    str property;
    TreeNode childTreeNode;
    SysDictClass SysDictClass;
    name tableName,fieldName;
    name className,classMethodName;
    int i;
    ;
    switch(_treeNode.sysNodeType())
    {
    case #NT_DBTABLE:
    {
    //Modify TableName
    if(onlyCurrentLayer(_treeNode))
    {
    tableName
    = tableId2Name(_treeNode.applObjectId());
    if(substr(tableName,1,4) != #prefix)
    _treeNode.AOTsetProperty(
    "Name",#Prefix + tableName);
    }

    //Modify field Name
    childTreeNode = _treeNode.AOTfirstChild().AOTfirstChild();
    while(childTreeNode)
    {
    if(!onlyCurrentLayer(_treeNode) && onlyCurrentLayer(childTreeNode))
    {
    fieldName
    = fieldId2Name(_treeNode.applObjectId(),childTreeNode.applObjectId());
    if(substr(fieldName,1,4) != #prefix)
    {
    childTreeNode.AOTsetProperty(
    "Name",#Prefix + fieldName);
    childTreeNode.AOTcompile(
    1);
    childTreeNode.AOTsave();
    }
    }
    childTreeNode
    = childTreeNode.AOTnextSibling();

    }
    //Save
    _treeNode.AOTcompile(1);
    _treeNode.AOTsave();
    //Synchronize Table
    appl.dbSynchronize(SysDictTable::newTreeNode(_treeNode).id());
    break;
    }
    case #NT_CLASS :
    {
    //Modify className
    if(onlyCurrentLayer(_treeNode))
    {
    className
    = ClassId2Name(_treeNode.applObjectId());
    if(substr(className,1,4) != #prefix)
    _treeNode.AOTsetProperty(
    "Name",#Prefix + className);
    }
    //Modify method Name on this class
    childTreeNode = _treeNode.AOTfirstChild();
    SysDictClass
    = new SysDictClass(_treeNode.applObjectId());
    i
    = 0;
    while(childTreeNode)
    {
    if(!onlyCurrentLayer(_treeNode) && onlyCurrentLayer(childTreeNode))
    {
    info(int2str(_treeNode.applObjectId()));
    classMethodName
    = SysDictClass.objectMethodObject(i).name();
    info(classMethodName);
    if(classMethodName && substr(classMethodName,1,4) != #prefix)
    {
    childTreeNode.AOTsetProperty(
    "Name",#Prefix + classMethodName);

    childTreeNode.AOTcompile(
    1);//It look like throw waring....?????
    childTreeNode.AOTsave();
    }
    }
    childTreeNode
    = childTreeNode.AOTnextSibling();
    i
    ++;
    }
    //Save
    _treeNode.AOTcompile(1);
    _treeNode.AOTsave();
    break;
    }
    default : break;
    }
    }

    //Get the classes and tables to be modify
    void getElementsToBeModified(TreeNode _treeNode)
    {
    TreeNodeIterator projectGroupIt;
    TreeNode projectSuperNode,projectGroupNode;
    ;
    if(!_treeNode)
    return;

    //Project Group
    if(_treeNode.sysNodeType() == #NT_PROJECT_GROUP)
    {
    projectGroupIt
    = _treeNode.AOTiterator();
    projectGroupNode
    = projectGroupIt.next();
    while(projectGroupNode != null)
    {
    getElementsToBeModified(projectGroupNode);
    projectGroupNode
    = projectGroupIt.next();
    }
    }
    else
    info(strfmt(
    "Modify object : %1", _treeNode.toString()));
    modify(_treeNode);
    }
    ;
    projectNode
    = projectNode.getRunNode();
    projectIt
    = projectNode.AOTiterator();
    pNode
    = projectIt.next();

    while(pNode)
    {
    getElementsToBeModified(pNode);
    pNode
    = projectIt.next();
    }
    }
  • 相关阅读:
    Linux环境下安装Tigase XMPP Server
    虚拟机几种网络连接方式的区别
    MySQL修改root密码
    Eclipse使用多个Console
    Eclipse导入Java项目时“No projects are found to import”错误的处理
    GitHub上下载源代码的方法
    Tigase XMPP Server的安装
    MySQL的安装与配置
    Windows下查看JDK是否安装以及安装路径
    archive for required library...
  • 原文地址:https://www.cnblogs.com/Fandyx/p/1894678.html
Copyright © 2020-2023  润新知