Esempio n. 1
0
def find_non_cluster_addr(addrs):
    non_cluster_addr_list = []
    for addr in addrs:
        cluster_num = cdq.get_cluster_number([addr]).pop()
        if cluster_num == -1:
            non_cluster_addr_list.append(cluster_num)
    return non_cluster_addr_list
Esempio n. 2
0
def add_db(c_dict):
    '''
     1. db에서 주소에 해당하는 값이 모두 동일하다면
         - 클러스터 번호설정 ==> 그대로 냅두면 되는듯
         - 클러스터 번호가 -1 이라면 max값 설정
     2. db에 해당하는 주소가 동일하지 않다면
         - -1이 아닌 최소값으로 설정
     3. 클러스터번호에 설정하는 주소가 있다
    '''
    for _, addrs in c_dict.items():
        cluster_num_list = sorted(list(cdq.get_cluster_number(addrs)))
        if len(cluster_num_list) == 1 and cluster_num_list[0] == -1:
            cluster_num = cdq.get_max_clustered() + 1
            execute_list = list(zip([cluster_num]*len(addrs), addrs))
            cdq.update_cluster_many(execute_list)
        else:
            cluster_num = -1
            for num in cluster_num_list:
                if num != -1:
                    cluster_num = num
                    break
            for num in cluster_num_list:
                if num != cluster_num:
                    addr = cdq.find_addr_from_cluster_num(num)
                else:
                    addr = addrs
                execute_list = list(zip([cluster_num]*len(addr), addr))
                cdq.update_cluster_many(execute_list)
Esempio n. 3
0
def get_cluster_num(addrs, max_cluster_num):
    cls_num_set = set(cdq.get_cluster_number(addrs))
    #all same cluster
    if len(cls_num_set) == 1:
        cls_num = cls_num_set.pop()
        if cls_num == -1:
            cls_num = max_cluster_num + 1
            max_cluster_num = cls_num
    else:
        cls_num = cdq.get_min_clustered(addrs)
    return cls_num, max_cluster_num
Esempio n. 4
0
def find_non_cluster_addr(addrs):
    non_cluster_addr_list = []
    for addr in addrs:
        cluster_num_set = cdq.get_cluster_number([addr])
        if len(cluster_num_set) <= 0:
            print("NoClusterNum!", addr)
            continue
        cluster_num = cluster_num_set.pop()
        if cluster_num == -1:
            non_cluster_addr_list.append(addr)
    return non_cluster_addr_list
Esempio n. 5
0
def add_db(c_dict):
    '''
     database에 update 해야함
     1. db에서 주소에 해당하는 값이 모두 동일하다면
         - 클러스터 번호설정 ==> 그대로 냅두면 되는듯
         - 클러스터 번호가 -1 이라면 max값 설정
     2. db에 해당하는 주소가 동일하지 않다면
         - -1이 아닌 최소값으로 설정
     3. 클러스터번호에 설정하는 주소가 있다
    '''
    if len(c_dict) == 0:
        print("NO INPUTS!")
        return
    max_cluster_num = cdq.get_max_clustered()
    #print("[ADD_DB DEBUG - max_cluster_num]", max_cluster_num)
    for _, addrs in c_dict.items():
        #print("[ADD_DB DEBUG - addrs]",addrs)
        cluster_num_list = sorted(list(cdq.get_cluster_number(addrs)))
        #print("[ADD_DB DEBUG - cluster_num_list]", cluster_num_list)
        if len(cluster_num_list) == 1:
            if cluster_num_list[0] == -1:
                cluster_num = max_cluster_num + 1
                max_cluster_num = cluster_num
                execute_list = list(zip([cluster_num] * len(addrs), addrs))
                #print("[ADD_DB DEBUG - first execute_list]", execute_list)
                cdq.update_cluster_many(execute_list)
        else:
            cluster_num = -1
            for num in cluster_num_list:
                if num != -1:
                    cluster_num = num
                    break
            #print("[ADD_DB DEBUG - cluster_num, cluster_num_list]", cluster_num, cluster_num_list)
            for num in cluster_num_list:
                if num != cluster_num:
                    if num != -1:
                        addr = cdq.find_addr_from_cluster_num(num)
                        #print("[ADD_DB DEBUG -cluster_num여러개, -1아닌경우addr]", addr)
                    else:
                        addr = find_non_cluster_addr(addrs)
                        #print("[ADD_DB DEBUG -cluster_num여러개, -1인경우addr]", addr)
                else:
                    addr = addrs

                execute_list = list(zip([cluster_num] * len(addr), addr))
                print("[ADD_DB DEBUG - second execute_list]", execute_list)
                cdq.update_cluster_many(execute_list)
Esempio n. 6
0
def add_db(c_dict):
    '''
     database에 update 해야함
     1. db에서 주소에 해당하는 값이 모두 동일하다면
         - 클러스터 번호설정 ==> 그대로 냅두면 되는듯
         - 클러스터 번호가 -1 이라면 max값 설정
     2. db에 해당하는 주소가 동일하지 않다면
         - -1이 아닌 최소값으로 설정
     3. 클러스터번호에 설정하는 주소가 있다
    '''
    if len(c_dict) == 0:
        print("NO INPUTS!")
        return
    max_cluster_num = cdq.get_max_clustered()

    for _, addrs in c_dict.items():
        cluster_num_list = sorted(list(cdq.get_cluster_number(addrs)))
        if len(cluster_num_list) == 1:
            if cluster_num_list[0] == -1:
                cluster_num = max_cluster_num + 1
                max_cluster_num = cluster_num
                execute_list = list(zip([cluster_num] * len(addrs), addrs))
                cdq.update_cluster_many(execute_list)
        else:
            cluster_num = -1
            for num in cluster_num_list:
                if num != -1:
                    cluster_num = num
                    break
            for num in cluster_num_list:
                if num != cluster_num:
                    if num != -1:
                        addr = cdq.find_addr_from_cluster_num(num)
                        execute_list = list(
                            zip([cluster_num] * len(addr), addr))
                        cdq.update_cluster_many(execute_list)
                    else:
                        addr = find_non_cluster_addr(addrs)
                        if addr == None:
                            continue
                        execute_list = list(
                            zip([cluster_num] * len(addr), addr))
                        cdq.update_cluster_many(execute_list)
                else:
                    addr = addrs
                    execute_list = list(zip([cluster_num] * len(addr), addr))
                    cdq.update_cluster_many(execute_list)