public List build()

in hugegraph-loader/src/main/java/org/apache/hugegraph/loader/builder/EdgeBuilder.java [74:112]


    public List<Edge> build(String[] names, Object[] values) {
        if (this.vertexIdsIndex == null ||
            !Arrays.equals(this.lastNames, names)) {
            this.vertexIdsIndex = this.extractVertexIdsIndex(names);
        }
        this.lastNames = names;
        EdgeKVPairs kvPairs = this.newEdgeKVPairs();
        kvPairs.source.extractFromEdge(names, values,
                                       this.vertexIdsIndex.sourceIndexes);
        kvPairs.target.extractFromEdge(names, values,
                                       this.vertexIdsIndex.targetIndexes);
        kvPairs.extractProperties(names, values);

        List<Vertex> sources = kvPairs.source.buildVertices(false);
        List<Vertex> targets = kvPairs.target.buildVertices(false);
        if (sources.isEmpty() || targets.isEmpty()) {
            return ImmutableList.of();
        }
        E.checkArgument(sources.size() == 1 || targets.size() == 1 ||
                        sources.size() == targets.size(),
                        "The elements number of source and target must be: " +
                        "1 to n, n to 1, n to n");
        int size = Math.max(sources.size(), targets.size());
        List<Edge> edges = new ArrayList<>(size);
        for (int i = 0; i < size; i++) {
            Vertex source = i < sources.size() ?
                            sources.get(i) : sources.get(0);
            Vertex target = i < targets.size() ?
                            targets.get(i) : targets.get(0);
            Edge edge = new Edge(this.mapping.label());
            edge.source(source);
            edge.target(target);
            // Add properties
            this.addProperties(edge, kvPairs.properties);
            this.checkNonNullableKeys(edge);
            edges.add(edge);
        }
        return edges;
    }