Tuesday, February 12, 2013

Assign secuirty key for unassigned AOT objects

AOT Object Assign New SecKey
static void EXU_AOTObject_AssignNewSecKey_BUS(Args _args)
{
    #AOT
    #Properties
    TreeNode            path,treeNode,node;
    EXU_Tree            exuTree;
    TreeNodeIterator    iterator;
    Map                 map= new Map(Types::Integer,Types::String);
    MapEnumerator       mapEnumerator;
    UtilElementType     elementType;
    str                 name,newKeyName,newObjectName;
    boolean             ret,newObjectRet,checkSecurityKeyExist;
    TreeNode            newSecuirtyTreenode, setOnObject;
    #define.DEL('DEL_')
    #define.TMP('TMP')
    #define.EXU('EXU_')
    #define.SecurityKey("SecurityKey")
    #define.DisplayMenuItem("DisplayMenuItem")
    #define.ActionMenuItem("ActionMenuItem")
    #define.OutputMenuItem("OutputMenuItem")
    #define.Menu("Menu")
    #define.View("View")
    #define.Table("Table")
    ;
    map.insert(1,#DisplayMenuItem);
    map.insert(2,#ActionMenuItem);
    map.insert(3,#OutputMenuItem);
    map.insert(4,#Menu);
    map.insert(5,#View);
    map.insert(6,#Table);
    mapEnumerator = map.getEnumerator();
    while(mapEnumerator.moveNext())
    {
        iterator = null;
        treeNode = null;
        info(mapEnumerator.currentValue());
        switch(any2int(mapEnumerator.currentKey()))
        {
            case 1:
                path = treenode::findNode(#MenuItemsDisplayPath);
            break;
            case 2:
                path = treenode::findNode(#MenuItemsActionPath);
            break;
            case 3:
                path = treenode::findNode(#MenuItemsOutputPath);
            break;
            case 4:
                path = treenode::findNode(#MenusPath);
            break;
            case 5:
                path = treenode::findNode(#ViewsPath);
            break;
            case 6:
                path = treenode::findNode(#TablesPath);
            break;
            default:
                continue;
         }
        iterator = path.AOTiterator();
        treeNode = iterator.next();
        while(treeNode)
        {
            name = SysTreeNode::applObjectName(treeNode.treeNodePath()); // Return the current Object Name
            if(strScan(name,#DEL,1,strLen(name))|| strScan(name,#TMP,1,strLen(name)))  // Check Object Name start with  'DEL_' or 'TMP'
            {
                ret = true;
            }
            if(SysTreeNode::isNodeInLayer(treeNode, UtilEntryLevel::bus) && //Check Object exist in BUS layer or not
               treeNode.AOTgetProperty(#PropertySecuritykey) == '' && // Check Object Property i.e.(Security Key is blank)
               !ret)
            {
                newKeyName    = #EXU + name ; // A new unique security key name
                newObjectName = treeNode.newObjectName(newKeyName); // Suggest a new name for the object if exist else return the same name
                if(newKeyName != newObjectName) // Check new Object Name exist in AOT or not
                {
                    checkSecurityKeyExist = true; // If name already exist then checkSecuirtyKeyExist = true;
                }
                if(newKeyName)
                {
                    /*if(!checkSecurityKeyExist)
                    {
                        newSecuirtyTreenode = TreeNode::findNode(#SecurityKeysPath); //Find the security key node in AOT
                        newSecuirtyTreenode.AoTadd(newKeyName); // Create and add a new Secruity Key to AOT
                        sqlDataDictionary::Synchronize();
                    }
                    setOnObject = TreeNode::findNode(treeNode.treeNodePath()); //Find the current Object in the AOT
                    setOnObject.AOTsetProperty(#SecurityKey,newKeyName); //Assign a newly created Security Key to Objects Properties
                    setOnObject.AOTsave();*/
                    info(strfmt("Object Name : %1 ,Security Key Name : %2 , Path : %3, Object type: %4, Layer : %5, Configuration Key : %6",
                    name,
                    newKeyName,
                    treeNode.treeNodePath(),
                    any2int(mapEnumerator.currentKey()) > 3 ? mapEnumerator.currentValue() : treeNode.AOTgetProperty(#PropertyObjectType),
                    'bus',
                    treenode.AOTgetProperty(#PropertyConfigurationkey)
                    ));
                }
            }
            treeNode = treenode.AOTnextSibling();
            checkSecurityKeyExist = false;
            ret = false;
        }
    }
}

No comments:

Post a Comment