def import_jdk_parameter_relation(cur, session):
    parameter_data = read_parameter_data(cur)
    for each in parameter_data:
        if each is not None:
            name = each[0]
            method_id = each[1]
            type_string = each[2]
            description = each[3]
            type_class = each[4]
            full_declaration = type_string + " " + name
            description = clean_html_text(description)
            parameter_entity = APIEntity.find_by_full_declaration_and_description(session, full_declaration, description)
            jdk_method_knowledge_table = KnowledgeTableFactory.get_jdk_method_table(session)
            api_knowledge_table = KnowledgeTableFactory.get_api_entity_table(session)
            method_entity_id = KnowledgeTableRowMapRecord.get_end_row_id(session, jdk_method_knowledge_table, api_knowledge_table, method_id)

            if parameter_entity is not None and method_entity_id is not None:
                end_api_id = parameter_entity.id
                api_relation_has_parameter = APIRelation(method_entity_id, end_api_id, APIRelation.RELATION_TYPE_HAS_PARAMETER)
                print("------------------------")
                print(api_relation_has_parameter)
                api_relation_has_parameter.find_or_create(session, autocommit=False)
            if type_class == 0:
                qualified_class_name = type_string
            else:
                qualified_class_name = get_qualified_class_name(type_class, cur)
            if qualified_class_name is not None and parameter_entity is not None:
                class_entity = APIEntity.find_by_qualifier(session, qualified_class_name)
                if class_entity is not None:
                    api_relation_has_type = APIRelation(parameter_entity.id, class_entity.id, APIRelation.RELATION_TYPE_PARAMETER_HAS_TYPE)
                    print("=============================")
                    print(api_relation_has_type)
                    api_relation_has_type.find_or_create(session, autocommit=False)
    session.commit()
Ejemplo n.º 2
0
def import_android_return_value(cur, session):
    return_value_data = read_android_return_value_data(cur)
    for each in return_value_data:
        print(each)
        return_value_name = each[0]
        return_value_text = clean_html_text(each[1])
        return_value_url = each[2]
        # print(return_value_name)
        # print(return_value_text)
        # print(return_value_url)
        qualified_name = ""
        if return_value_url != "":
            qualified_name_list = return_value_url.replace(
                "https://developer.android.google.cn/reference/",
                "").replace(".html", "").split("/")
            for i in range(0, len(qualified_name_list)):
                if i == 0:
                    qualified_name += qualified_name_list[i]
                else:
                    qualified_name += ("." + qualified_name_list[i])
        else:
            qualified_name = return_value_name
        qualified_name = qualified_name + " (R)"
        print(qualified_name)
        api_entity = APIEntity(qualified_name, APIEntity.API_TYPE_RETURN_VALUE,
                               return_value_name, return_value_text)
        # print(api_entity)
        api_entity.find_or_create(session, autocommit=False)
    session.commit()
Ejemplo n.º 3
0
    def print_compare(self, html):
        # print html
        old_text = clean_html_text(html)
        print "old text: "

        print old_text
        text = clean_html_text_with_format(html)
        print "new method text: "
        print text
Ejemplo n.º 4
0
def start_clean_html():
    api_html_text_list = session.query(APIHTMLText).filter_by(
        clean_text=None).all()
    count = 0
    step = 5000
    for api_html_text in api_html_text_list:

        api_html_text.clean_text = clean_html_text(api_html_text.html)
        count = count + 1
        if count > step:
            session.commit()
            count = 0
    session.commit()
def import_jdk_return_value_relation(cur, session):
    return_value_data = read_return_value_data(cur)
    total = 0
    type1 = 0
    type2 = 0
    for each in return_value_data:
        total += 1
        method_id = each[0]
        full_declaration = each[1]
        return_type = each[2]
        return_string = each[3]
        return_type = process_return_type_string(return_type)
        qualified_name = construct_qualified_name_by_full_declaration(full_declaration, return_type)
        print("****************")
        print(method_id)
        print(return_type)
        print(full_declaration)
        print(qualified_name)
        if qualified_name is None:
            qualified_name = return_type
        return_string = clean_html_text(return_string)
        parameter_entity = APIEntity.find_by_full_declaration_and_description(session, return_type, return_string)

        jdk_method_knowledge_table = KnowledgeTableFactory.get_jdk_method_table(session)
        api_knowledge_table = KnowledgeTableFactory.get_api_entity_table(session)
        method_entity_id = KnowledgeTableRowMapRecord.get_end_row_id(session, jdk_method_knowledge_table,
                                                                     api_knowledge_table, method_id)
        if parameter_entity is not None and method_entity_id is not None:
            end_api_id = parameter_entity.id
            api_relation_has_return_value = APIRelation(method_entity_id, end_api_id,
                                                        APIRelation.RELATION_TYPE_HAS_RETURN_VALUE)
            api_relation_has_return_value.find_or_create(session, autocommit=False)
            print("------------------------")
            print(api_relation_has_return_value)
            type1 += 1

        if qualified_name is not None and parameter_entity is not None:
            print("+++++++++++++++++++++")
            print(qualified_name)
            class_entity = APIEntity.find_by_qualifier(session, qualified_name)
            if class_entity is not None:
                api_relation_has_type = APIRelation(parameter_entity.id, class_entity.id,
                                                    APIRelation.RELATION_TYPE_RETURN_VALUE_HAS_TYPE)
                api_relation_has_type.find_or_create(session, autocommit=False)
                print("=============================")
                print(api_relation_has_type)
                type2 += 1
    session.commit()
    print("total: " + str(total) + ", type1: " + str(type1) + ", type2: " + str(type2))
def import_jdk_return_value(cur, session):
    return_value_data = get_return_value_data(cur)
    for each in return_value_data:
        full_declaration = each[0]
        return_type = each[1]
        return_string = each[2]
        print(return_type)
        return_type = process_return_type_string(return_type)
        qualified_name = construct_qualified_name_by_full_declaration(full_declaration, return_type)
        if qualified_name is not None:
            qualified_name = qualified_name + " (R)"
        else:
            qualified_name = return_type + " (R)"
        return_string = clean_html_text(return_string)
        api_entity = APIEntity(qualified_name, APIEntity.API_TYPE_RETURN_VALUE, return_type, return_string)
        api_entity.find_or_create(session, autocommit=False)
    session.commit()
Ejemplo n.º 7
0
def import_jdk_exception_condition(cur, session):
    exception_condition_data = read_exception_condition_data(cur)
    for each in exception_condition_data:
        name = each[0]
        description = each[1]
        qualified_name = get_qualified_name_by_simple_name(name, cur)
        if qualified_name is not None:
            qualified_name = qualified_name + ' (E)'
        else:
            qualified_name = name + ' (E)'
        print(qualified_name)
        description = clean_html_text(description)
        api_entity = APIEntity(qualified_name,
                               APIEntity.API_TYPE_EXCEPTION_CONDITION, name,
                               description)
        api_entity.find_or_create(session, autocommit=False)
    session.commit()
Ejemplo n.º 8
0
def import_jdk_exception_relation(cur, session):
    jdk_exception_data = read_jdk_exception_data(cur)
    simple_exception_name_list = get_simple_exception_name_list(session)
    total = 0
    type1 = 0
    type2 = 0
    for each in jdk_exception_data:
        total += 1
        name = each[0]
        method_id = each[1]
        description = each[2]
        description = clean_html_text(description)
        exception_entity = APIEntity.find_by_full_declaration_and_description(
            session, name, description)
        jdk_method_knowledge_table = KnowledgeTableFactory.get_jdk_method_table(
            session)
        api_knowledge_table = KnowledgeTableFactory.get_api_entity_table(
            session)
        method_entity_id = KnowledgeTableRowMapRecord.get_end_row_id(
            session, jdk_method_knowledge_table, api_knowledge_table,
            method_id)
        if exception_entity is not None and method_entity_id is not None:
            type1 += 1
            api_relation_has_exception = APIRelation(
                method_entity_id, exception_entity.id,
                APIRelation.RELATION_TYPE_HAS_EXCEPTION)
            api_relation_has_exception.find_or_create(session,
                                                      autocommit=False)
            print("------------------------")
            print(api_relation_has_exception)

        if exception_entity is not None and name is not None:
            type2 += 1
            exception_id = get_exception_id_by_simple_name(
                simple_exception_name_list, name)
            if exception_id is not None:
                api_relation_has_type = APIRelation(
                    exception_entity.id, exception_id,
                    APIRelation.RELATION_TYPE_EXCEPTION_HAS_TYPE)
                api_relation_has_type.find_or_create(session, autocommit=False)
                print("=============================")
                print(api_relation_has_type)
    session.commit()
    print("total: " + str(total) + ", type1: " + str(type1) + ", type2: " +
          str(type2))
Ejemplo n.º 9
0
def create_class_node(row_data):
    old_id = row_data[0]
    # no full package name, only the class name, etc. "android.view.Button" has simple name "Button"

    simple_class_name = row_data[1]

    short_description_html = row_data[2]
    first_version = row_data[6]
    full_declaration = row_data[7]
    package_id = row_data[9]

    short_description = None
    if short_description_html:
        short_description = clean_html_text(short_description_html)
        short_description = short_description.strip()
        if not short_description:
            short_description = None

    if first_version == -1:
        first_version = None
    qualified_name = generate_qualified_name_for_class(
        simple_class_name=simple_class_name, class_package_id=package_id)
    api_type = get_api_type_from_full_declaration(full_declaration)
    logger.info("qualified_name=%s type=%s form %s", qualified_name, api_type,
                full_declaration)

    if api_type == APIEntity.API_TYPE_UNKNOWN:
        return None, 0
    api_entity = APIEntity(qualified_name=qualified_name,
                           api_type=api_type,
                           full_declaration=full_declaration,
                           added_in_version=first_version,
                           short_description=short_description)

    logger.info(row_data)
    logger.info(qualified_name)
    logger.info(api_type)
    logger.info(full_declaration)
    logger.info(first_version)
    logger.info(short_description)
    logger.info("-----------------")

    return api_entity, old_id
def import_android_return_value_relation(cur, session):
    total = 0
    type1 = 0
    type2 = 0
    return_value_data = read_android_return_value_data(cur)
    for each in return_value_data:
        total += 1
        return_value_name = each[0]
        return_value_text = clean_html_text(each[1])
        method_id = each[2]
        return_value_url = each[3]
        return_value_entity = APIEntity.find_by_full_declaration_and_description(session, return_value_name, return_value_text)
        api_knowledge_table = KnowledgeTableFactory.get_api_entity_table(session)
        android_method_table = KnowledgeTableFactory.get_android_method_table(session)
        method_entity_id = KnowledgeTableRowMapRecord.get_end_row_id(session, android_method_table, api_knowledge_table,
                                                                     method_id)
        qualified_name = ""
        if return_value_url != "":
            qualified_name_list = return_value_url.replace("https://developer.android.google.cn/reference/",
                                                           "").replace(".html", "").split("/")
            for i in range(0, len(qualified_name_list)):
                if i == 0:
                    qualified_name += qualified_name_list[i]
                else:
                    qualified_name += ("." + qualified_name_list[i])
        else:
            qualified_name = return_value_name
        return_value_class = session.query(APIEntity).filter_by(qualified_name=qualified_name).first()
        if return_value_entity is not None and method_entity_id is not None:
            type1 += 1
            api_relation_has_return_value = APIRelation(method_entity_id, return_value_entity.id, APIRelation.RELATION_TYPE_HAS_RETURN_VALUE)
            api_relation_has_return_value.find_or_create(session, autocommit=False)
        if return_value_entity is not None and return_value_class is not None:
            type2 += 1
            api_relation_has_type = APIRelation(return_value_entity.id, return_value_class.id, APIRelation.RELATION_TYPE_RETURN_VALUE_HAS_TYPE)
            api_relation_has_type.find_or_create(session, autocommit=False)
    session.commit()
    print(total)
    print(type1)
    print(type2)
Ejemplo n.º 11
0
def import_jdk_parameter(cur, session):
    jdk_parameter_data = read_jdk_parameter_data(cur)
    for each in jdk_parameter_data:
        print(each)
        name = each[0]
        type_class = each[1]
        type_string = each[2]
        description = each[3]
        qualified_class_name = get_qualified_class_name(type_class, cur)
        print(qualified_class_name)
        if qualified_class_name is not None:
            qualified_name = qualified_class_name[0] + " " + name
        else:
            qualified_name = type_string + " " + name
        full_declaration = type_string + " " + name
        print(qualified_name)
        print(full_declaration)
        description = clean_html_text(description)
        api_entity = APIEntity(qualified_name, APIEntity.API_TYPE_PARAMETER,
                               full_declaration, description)
        api_entity.find_or_create(session, autocommit=False)
    session.commit()