Exemplo n.º 1
0
def process_neo4j(args):

    # List refnames of all names in the Neo4j database
    # If there is no refname in db, then the name is handled as a refname.
    try:

        t = time.perf_counter()

        result = Name.get_all_first_names()
        for record1 in result:
            first = record1["first"]

            ref_name = ''
            names = first.split(" ")
            for name in names:
                record2 = None  # If there is no refname
                result = Refname.get_refname(name)

                for record2 in result:
                    #                    aname = record2["aname"]
                    bname = record2["bname"]
                    ref_name = ref_name + bname + " "
                    # print("\nName: " + aname + " ---> Refname: " + bname)

                if not record2:
                    ref_name = ref_name + name + " "

            print("\nName in db: " + first + " ---> refname: " + ref_name)

            n = Name()
            n.first = first
            n.refname = ref_name
            n.set_refname()

        elapsed_time = time.perf_counter() - t
        print("\nTime needed: " + str(elapsed_time) + " seconds")

    except Exception as err:
        print("Virhe: {0}".format(err), file=stderr)
Exemplo n.º 2
0
def handle_people(collection, userid):
    # Get all the people in the collection
    people = collection.getElementsByTagName("person")

    print("*****People*****")
    counter = 0

    # Print detail of each person
    for person in people:

        p = Person()

        if person.hasAttribute("handle"):
            p.handle = person.getAttribute("handle")
        if person.hasAttribute("change"):
            p.change = person.getAttribute("change")
        if person.hasAttribute("id"):
            p.id = person.getAttribute("id")

        if len(person.getElementsByTagName('gender')) == 1:
            person_gender = person.getElementsByTagName('gender')[0]
            p.gender = person_gender.childNodes[0].data
        elif len(person.getElementsByTagName('gender')) > 1:
            print("Error: More than one gender tag in a person")

        if len(person.getElementsByTagName('name')) >= 1:
            for i in range(len(person.getElementsByTagName('name'))):
                person_name = person.getElementsByTagName('name')[i]
                pname = Name()
                if person_name.hasAttribute("alt"):
                    pname.alt = person_name.getAttribute("alt")
                if person_name.hasAttribute("type"):
                    pname.type = person_name.getAttribute("type")

                if len(person_name.getElementsByTagName('first')) == 1:
                    person_first = person_name.getElementsByTagName('first')[0]
                    if len(person_first.childNodes) == 1:
                        pname.first = person_first.childNodes[0].data
                    elif len(person_first.childNodes) > 1:
                        print(
                            "Error: More than one child node in a first name of a person"
                        )
                elif len(person_name.getElementsByTagName('first')) > 1:
                    print("Error: More than one first name in a person")

                if len(person_name.getElementsByTagName('surname')) == 1:
                    person_surname = person_name.getElementsByTagName(
                        'surname')[0]
                    if len(person_surname.childNodes) == 1:
                        pname.surname = person_surname.childNodes[0].data
                    elif len(person_surname.childNodes) > 1:
                        print(
                            "Error: More than one child node in a surname of a person"
                        )
                elif len(person_name.getElementsByTagName('surname')) > 1:
                    print("Error: More than one surname in a person")

                if len(person_name.getElementsByTagName('suffix')) == 1:
                    person_suffix = person_name.getElementsByTagName(
                        'suffix')[0]
                    pname.suffix = person_suffix.childNodes[0].data
                elif len(person_name.getElementsByTagName('suffix')) > 1:
                    print("Error: More than one suffix in a person")

                p.name.append(pname)

        if len(person.getElementsByTagName('eventref')) >= 1:
            for i in range(len(person.getElementsByTagName('eventref'))):
                person_eventref = person.getElementsByTagName('eventref')[i]
                if person_eventref.hasAttribute("hlink"):
                    p.eventref_hlink.append(
                        person_eventref.getAttribute("hlink"))
                if person_eventref.hasAttribute("role"):
                    p.eventref_role.append(
                        person_eventref.getAttribute("role"))

        if len(person.getElementsByTagName('parentin')) >= 1:
            for i in range(len(person.getElementsByTagName('parentin'))):
                person_parentin = person.getElementsByTagName('parentin')[i]
                if person_parentin.hasAttribute("hlink"):
                    p.parentin_hlink.append(
                        person_parentin.getAttribute("hlink"))

        if len(person.getElementsByTagName('citationref')) >= 1:
            for i in range(len(person.getElementsByTagName('citationref'))):
                person_citationref = person.getElementsByTagName(
                    'citationref')[i]
                if person_citationref.hasAttribute("hlink"):
                    p.citationref_hlink.append(
                        person_citationref.getAttribute("hlink"))

        p.save(userid)
        counter += 1

        # There can be so many individs to store that Cypher needs a pause
        time.sleep(0.1)

    print("Number of people stored: " + str(counter))