This project has retired. For details please refer to its Attic page.
VertexEdgeCount xref
View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.apache.giraph.graph;
20  
21  /**
22   * Simple immutable structure for storing a final vertex and edge count.
23   */
24  public class VertexEdgeCount {
25    /** Immutable vertices */
26    private final long vertexCount;
27    /** Immutable edges */
28    private final long edgeCount;
29    /** Immutable mappings */
30    private final long mappingCount;
31  
32    /**
33     * Default constructor.
34     */
35    public VertexEdgeCount() {
36      vertexCount = 0;
37      edgeCount = 0;
38      mappingCount = 0;
39    }
40  
41    /**
42     * Constructor with initial values.
43     *
44     * @param vertexCount Final number of vertices.
45     * @param edgeCount Final number of edges.
46     * @param mappingCount Final number of mappings.
47     */
48    public VertexEdgeCount(long vertexCount, long edgeCount, long mappingCount) {
49      this.vertexCount = vertexCount;
50      this.edgeCount = edgeCount;
51      this.mappingCount = mappingCount;
52    }
53  
54    public long getVertexCount() {
55      return vertexCount;
56    }
57  
58    public long getEdgeCount() {
59      return edgeCount;
60    }
61  
62    public long getMappingCount() {
63      return mappingCount;
64    }
65  
66    /**
67     * Increment the both the vertex edge count with a {@link VertexEdgeCount}.
68     *
69     * @param vertexEdgeCount add both the vertices and edges of this object.
70     * @return New immutable object with the new vertex and edge counts.
71     */
72    public VertexEdgeCount incrVertexEdgeCount(
73        VertexEdgeCount vertexEdgeCount) {
74      return new VertexEdgeCount(
75          vertexCount + vertexEdgeCount.getVertexCount(),
76          edgeCount + vertexEdgeCount.getEdgeCount(),
77          mappingCount + vertexEdgeCount.getMappingCount());
78    }
79  
80    /**
81     * Increment the both the vertex edge count with primitives.
82     *
83     * @param vertexCount Add this many vertices.
84     * @param edgeCount Add this many edges.
85     * @return New immutable object with the new vertex and edge counts.
86     */
87    public VertexEdgeCount incrVertexEdgeCount(
88        long vertexCount, long edgeCount) {
89      return new VertexEdgeCount(
90          this.vertexCount + vertexCount,
91          this.edgeCount + edgeCount,
92          this.mappingCount + mappingCount);
93    }
94  
95    @Override
96    public String toString() {
97      return "(v=" + getVertexCount() + ", e=" + getEdgeCount() +
98          (mappingCount > 0 ? ", m=" + mappingCount : "") + ")";
99    }
100 }