Esempio n. 1
0
def tuple_cmd(argv, gno, cno):
    if len(argv) < 2:
        print('Not enough arguments')
        return

    if argv[1] == 'vertex' or argv[1] == 'v':
        if len(argv) != 5:
            print('Illegal number of arguments for tuples set vertex')
            return

        cdir = component.get_dir(gno, cno)
        sv = schema.read(cdir, 'v')
        vid = int(argv[2])
        tuples_set.set_vertex(cdir, vid, sv, argv[3], argv[4])
        return

    elif argv[1] == 'edge' or argv[1] == 'e':
        if len(argv) != 6:
            print('Illegal number of arguments for tuples set edge')
            return

        cdir = component.get_dir(gno, cno)
        se = schema.read(cdir, 'e')
        vid1 = int(argv[2])
        vid2 = int(argv[3])
        tuples_set.set_edge(cdir, vid1, vid2, se, argv[4], argv[5])
        return
Esempio n. 2
0
def edge_cmd(argv, gno, cno):
    if len(argv) != 3:
        return

    if gno < 0 or cno < 0:
        print('Create a new graph first')
        return

    vid1 = int(argv[1])
    vid2 = int(argv[2])

    # Check whether edge exists in current component
    cdir = component.get_dir(gno, cno)
    if edge.exists(cdir, vid1, vid2):
        print('Edge (' + str(vid1) + ',' + str(vid2) + ') exists')
        return

    # Check whether one of the vertices is already in current component
    if not vertex.exists(cdir, vid1) and not vertex.exists(cdir, vid2):
        print('At least one vertex must exist in current component')
        return

    # Add the new vertex to the current component
    sv = schema.read(cdir, 'v')
    if not vertex.exists(cdir, vid1):
        vertex.add(cdir, vid1, sv)
    elif not vertex.exists(cdir, vid2):
        vertex.add(cdir, vid2, sv)

    # Add edge to current component
    se = schema.read(cdir, 'e')
    edge.add(cdir, vid1, vid2, se)
Esempio n. 3
0
def schema_add(argv, gno, cno):
    if len(argv) != 4:
        print('Illegal number of arguments for schema add')
        return

    if argv[1] == 'vertex' or argv[1] == 'v':
        cdir = component.get_dir(gno, cno)
        sv = schema.read(cdir, 'v')
        sv = schema.add(sv, argv[2], argv[3])
        schema.write(cdir, 'v', sv)
        tuples_update.update_vertexes(gno, cno, sv)

    elif argv[1] == 'edge' or argv[1] == 'e':
        cdir = component.get_dir(gno, cno)
        se = schema.read(cdir, 'e')
        se = schema.add(se, argv[2], argv[3])
        schema.write(cdir, 'e', se)
        tuples_update.update_edges(gno, cno, se)
Esempio n. 4
0
def update_vertexes(gno, cno, sv):
	vfile = component.get_dir(gno, cno) + '/v'
	fd1 = open(vfile, 'rb')
	fd2 = open(vfile + '.tmp', 'wb+')

	while True:
		vb = fd1.read(8)
		if not vb:
			break
		fd2.write(vb)
		update_tuple(sv, fd1, fd2)

	fd2.close()
	fd1.close()

	os.rename(vfile, vfile + '.bak')
	os.rename(vfile + '.tmp', vfile)
Esempio n. 5
0
def schema_cmd(argv, gno, cno):
    if gno < 0 or cno < 0:
        print('Create a new graph first')
        return

    if len(argv) > 1:
        if argv[1] == 'vertex' or argv[1] == 'v' or \
           argv[1] == 'edge' or argv[1] == 'e':
            if gno < 0 or cno < 0:
                print('Component does not exist')
                return

            schema_add(argv, gno, cno)
            return

    if gno >= 0 and cno >= 0:
        # Print schemas for specified component
        cdir = component.get_dir(gno, cno)
        schema.dump(cdir, 'v')
        schema.dump(cdir, 'e')
Esempio n. 6
0
def update_edges(gno, cno, se):
	efile = component.get_dir(gno, cno) + '/e'
	try:
		fd1 = open(efile, 'rb')
	except:
		return
	fd2 = open(efile + '.tmp', 'wb+')

	while True:
		v1b = fd1.read(8)
		if not v1b:
			break
		v2b = fd1.read(8)
		if not v2b:
			break
		fd2.write(v1b)
		fd2.write(v2b)
		update_tuple(se, fd1, fd2)

	fd2.close()
	fd1.close()

	os.rename(efile, efile + '.bak')
	os.rename(efile + '.tmp', efile)