def start_import(self):
        self.logger = Logger(self.logger_file_name).get_log()
        if not self.session:
            self.session = EngineFactory.create_session()
        self.init_knowledge_table()

        cur = ConnectionFactory.create_cursor_by_knowledge_table(self.data_source_knowledge_table)

        select_sql = "select {primary_key_name},{html_column} from {table}".format(
            primary_key_name=self.primary_key_name,
            html_column=self.html_column, table=self.table)
        cur.execute(select_sql)
        data_list = cur.fetchall()
        result_tuples = []
        for i in range(0, len(data_list)):
            row_data = data_list[i]
            primary_key = row_data[0]
            html_text = row_data[1]

            if KnowledgeTableColumnMapRecord.exist_import_record(session=self.session,
                                                                 start_knowledge_table=self.data_source_knowledge_table,
                                                                 end_knowledge_table=self.api_html_table,
                                                                 start_row_id=primary_key,
                                                                 start_row_name=self.html_column):
                self.logger.info("%d has been import to new table", primary_key)
                continue
            api_html_text = self.create_from_one_row_data(primary_key, html_text)

            if api_html_text:
                api_html_text = api_html_text.create(self.session, autocommit=False)
                result_tuples.append((api_html_text, primary_key))
            else:
                self.logger.warn("None api_html_text fot %s", str(row_data))
                continue

            if len(result_tuples) > self.commit_step:
                self.commit_to_server_for_column_map(map_tuples=result_tuples)
                result_tuples = []
        self.commit_to_server_for_column_map(map_tuples=result_tuples)
        self.logger.info("import api html completed!")
        cur.close()
from db.engine_factory import EngineFactory
from db.cursor_factory import ConnectionFactory
from db.model import LibraryEntity, KnowledgeTableRowMapRecord
from db.model_factory import KnowledgeTableFactory

cur = ConnectionFactory.create_cursor_for_jdk_importer()
session = EngineFactory.create_session()


def create_library_node_list():
    library_list = [
        {
            "library_name": "Android Platform APIs (API 27)",
            "version": "API level 27",
            "description":
            "Android provides a rich application framework that enables you to develop innovative applications and games for mobile devices in the Java language environment. Android Oreo is the 8th major release of the Android operating system. It was first released as a developer preview on October 25, 2017, with factory images for current Nexus and Pixel devices. A second developer preview was made available on November 27, 2017 for Nexus and Pixel devices, before the stable version was released on December 5, 2017.Android provides a rich application framework that enables you to develop innovative applications and games for mobile devices in the Java language environment.",
            "doc_website": "https://developer.android.com/reference/packages"
        },
        {
            "library_name":
            "Android Support Library",
            "version":
            "API level 27",
            "description":
            "Provides a variety of Android feature and utility APIs that are compatible with a wide range of platform versions.",
            "doc_website":
            "https://developer.android.com/reference/android/support/packages"
        },
    ]
    library_entity_list = []
    for library_data in library_list:
    data_list = cur.fetchall()
    result_tuples = []
    for i in range(0, len(data_list)):
        method_node, old_id = create_method_node(data_list[i])
        if method_node is None:
            logger.error(data_list[i])
            logger.error("unkonwn api type")
            continue
        if KnowledgeTableRowMapRecord.exist_import_record(
                session, method_knowledge_table, api_knowledge_table, old_id):
            print old_id, " has been import to new table"
        else:
            method_node = method_node.find_or_create(session, autocommit=False)
            result_tuples.append((method_node, old_id))
    session.commit()
    for item in result_tuples:
        (method_node, old_id) = item
        record = KnowledgeTableRowMapRecord(method_knowledge_table,
                                            api_knowledge_table, old_id,
                                            method_node.id)
        record.create(session, autocommit=False)
    session.commit()

    "complete import method"


if __name__ == "__main__":
    cur = ConnectionFactory.create_cursor_for_android_importer()
    import_all_android_method()
    cur.close()
Exemple #4
0
    index = 0
    for each in jdk_method_data:
        method_id = each[0]
        name = each[1]
        full_declaration = each[2]
        return_type = each[3]
        name = str(" ") + name
        return_value_string = full_declaration[:full_declaration.find(name)]
        return_type = process_return_type_string(return_type)
        if return_type.strip() not in return_value_string:
            print("-----------------------------------------")
            print(return_type)
            print(return_value_string)
            index += 1
            return_value_string = return_value_string.replace("<pre>", "").replace('<a href="../../../java/lang/Deprecated.html" title="annotation in java.lang">@Deprecated</a>', '')
            if "<" not in return_value_string:
                return_value_list = return_value_string.split(" ")
                return_value = return_value_list[-1]
            else:
                temp = return_value_string[return_value_string.find(">") + 1:]
                return_value = temp[:temp.find("<")]
            return_value = return_value.replace("[]", "")
            print(return_value)
            update_jdk_method_data(cur, method_id, return_value)
    conn.commit()
    print(index)


if __name__ == "__main__":
    cur, conn = ConnectionFactory.create_cursor_and_conn()
    clean_jdk_method(cur)