예제 #1
0
    def __translate(self, obj, newObj, index=False):
        mainMap = self.__getMap(classUtility.getType(obj))
        if mainMap:
            for attr in classUtility.getAttrList(obj):
                subObj = getattr(obj, attr)
                objType = classUtility.getType(subObj)
                if objType == 'dict':
                    newObj = self.__transDict2Attr(attr, subObj, newObj,
                                                   mainMap)
                elif objType == 'list':
                    myObjList = self.__transList(subObj)
                    setattr(newObj, self.__newType(attr), myObjList)
                elif objType in ['unicode', 'str']:
                    if self.__isTranslable(attr, mainMap):
                        newKey = mainMap[attr]
                        if '->' in newKey:
                            exName, exAttr = newKey.split('->')
                            extraObj = getClassObj(exName)
                            setattr(extraObj, exName, subObj)
                        else:
                            setattr(newObj, newKey, subObj)
                else:
                    if self.__isTranslable(objType, Mapping):
                        newType = self.__newType(objType)
                        if newType:
                            subNewObj = self.__getNewObj(objType)
                            subNewObj = self.__translate(subObj, subNewObj)
                        else:
                            newObj = self.__translate(subObj, newObj)
        else:
            for attr in classUtility.getAttrList(obj):
                setattr(newObj, attr, getattr(obj, attr))

        return newObj
예제 #2
0
    def __transList(self, subObj):
        myList = []
        i = 0
        for sub in subObj:
            if classUtility.getType(sub) not in classUtility.DATA_TYPES:
                subNewObj = self.__getNewObj(classUtility.getType(sub))
                subNewObj = self.__translate(sub, subNewObj, index=i)
                i += 1
                myList.append(subNewObj)

        return myList
예제 #3
0
 def sendoutEvent(self,
                  rawData,
                  count=False,
                  community=None,
                  version=None,
                  utf_8=True):
     """This method will take raw data, with counts to send out data."""
     myCount = 1
     myComm = DEFAULT_COMM
     myVer = DEFAULT_VER
     if count:
         myCount = int(count)
     if community:
         myComm = community
     if version:
         myVer = version
     for i in range(myCount):
         if getType(rawData) == 'list':
             for msg in rawData:
                 if self.snmp:
                     self.eventHandler.sendEvent(msg, self.type, myComm,
                                                 myVer, utf_8)
                 else:
                     self.eventHandler.sendEvent(msg, self.type, utf_8)
         else:
             if self.snmp:
                 self.eventHandler.sendEvent(rawData, self.type, myComm,
                                             myVer, utf_8)
             else:
                 self.eventHandler.sendEvent(rawData, self.type, utf_8)
예제 #4
0
    def getData(self, type, index=True, pickle=True):
        if pickle:
            data = self.__getData(type)
        else:
            data = self.__getData(type, pickle=False)
        if pickle and index:
            indexData = {}
            keyItem = testUtility.getKey(type)
            for item in data:
                if 'Attribute-' in keyItem:
                    key = item.attribute[keyItem.split('-')[-1]]
                elif classUtility.getType(keyItem) == 'list':
                    values = []
                    for subKey in keyItem:
                        values.append(getattr(item, subKey))
                    key = '-'.join(values)
                else:
                    key = getattr(item, keyItem)
                indexData[key] = item
            if type in TestConstant.special_handling:
                finalData = self.__specialHandling(type, indexData)
            else:
                finalData = indexData
        else:
            finalData = data

        return finalData
예제 #5
0
def listToClass(key, list, objModule):
    objList = []
    if key in create_device_wrap:
        objName = create_device_wrap[key]
    else:
        objName = key[0:-1]
    for item in list:
        if classUtility.getType(item) == 'dict':
            subObj = getClassObj(objName, module=objModule)
            subObj = hashToClass(item, subObj)
            objList.append(subObj)

    return objList
예제 #6
0
def rekeyKey(keyName, data):
    newData={}
    for key in data.keys():
        if classUtility.getType(data[key])=='list':
            for sub in data[key]:
                if 'Attribute-' in keyName:
                    newKey=sub.attribute[keyName.split('-')[-1]]
                else:
                    newKey=getattr(sub, keyName)
                newData[newKey]=key
        else:
            if 'Attribute-' in keyName:
                newKey=data[key].attribute[keyName.split('-')[-1]]
            else:
                newKey=getattr(data[key], keyName)
            newData[newKey]=key

    return newData
예제 #7
0
def hashToClass(hash, obj, objModule=False):
    attrKeys = hash.keys()
    for key in attrKeys:
        subType = classUtility.getType(hash[key])
        if subType == 'list':
            objList = listToClass(key, hash[key], objModule)
            setattr(obj, key, objList)
        elif subType == 'dict':
            if key == 'attribute':
                setattr(obj, 'attribute', hash[key])
            else:
                subObj = hashToClass(hash[key],
                                     getClassObj(key, module=objModule))
                setattr(obj, key, subObj)
        elif subType == 'str':
            setattr(obj, key, hash[key])

    return obj
예제 #8
0
    def doTranslate(self, obj):
        newObj = self.__getNewObj(classUtility.getType(obj))
        newObj = self.__translate(obj, newObj)

        return newObj
예제 #9
0
 def _setType(self, object):
     return classUtility.getType(object) + 's'
예제 #10
0
def formatData(reader, fileName, type=False):
    formattedData={}
    specialKey=''
    if type:
        type, objType=retriveType(fileName, type=type)
    else:
        type, objType=retriveType(fileName)
    nameMap=myConstant.data_structure[objType]
    for item in reader:
        if metCondition(item):
            map={}
            for numkey in nameMap.keys():
                if numkey > (len(item)-1):
                    map[nameMap[numkey]]=''
                else:
                    nums=nameMap[numkey]
                    if classUtility.getType(nums)=='list':
                        for subKey in nums:
                            map[subKey]=item[numkey].strip()
                    else:
                        map[nums]=item[numkey].strip()

            myObj=locateClassInstance.getClassInstance(objType)
            for key in map.keys():
                if 'Attribute-' in key:
                    myObj.attribute[key.split('-')[-1].strip()]=map[key].strip()
                else:
                    if key in myConstant.special_keys:
                        value=specialFormat(key, map[key])
                    else:
                        value=map[key]
                    setattr(myObj, key, value)
            if objType=='group':
                myObj.attribute['type']=myConstant.group_tasks[type]
            elif objType=='eventAttributeType':
                myList=item[4:9]
                myList.extend(item[10:14])
                myList.extend(item[15:22])
                myObj.categories=getCategories(myList)
            elif objType=='deviceType':
                myObj.sysDefined='true'
            elif objType=='eventCode':
                if '$' in myObj.code:
                    specialKey=myObj.code.split('$')[-1]
                myObj.eventAttributeType=specialKey
                map['eventAttributeType']=specialKey
            keys=getKeys(objType)
            values=[]
            if classUtility.getType(keys)=='list':
                for key in keys:
                    values.append(map[key])
                value='-'.join(values)
            else:
                value=map[keys]
            formattedData[value]=myObj

    if formattedData:
        if objType in myConstant.special_package:
            finalData=specialProcess(objType, formattedData)
        else:
            finalData=formattedData
    else:
        print '%s has empty file.' % fileName.split('/')[-1]
        finalData=''

    return finalData