@Override public Embedding map(Embedding embedding) throws Exception { for (int i = 0; i < count; i++) { GradoopId id = GradoopId.get(); embedding.add(id); } return embedding; } }
/** * Writes the byte representation of a GradoopId into the target byte array * starting at the specified offset * @param value GradoopId that will be written * @param target Target byte array * @param offset offset the value will be written to */ private void writeId(GradoopId value, byte[] target, int offset) { System.arraycopy(value.toByteArray(), 0, target, offset, GradoopId.ID_SIZE); }
@Override public void updateVertex(Vertex<GradoopId, GradoopId> vertex, MessageIterator<GradoopId> messageIterator) throws Exception { GradoopId lastComponent = vertex.getValue(); GradoopId newComponent = lastComponent; for (GradoopId messageComponent : messageIterator) { if (messageComponent.compareTo(newComponent) < 0) { newComponent = messageComponent; } } if (!lastComponent.equals(newComponent)) { setNewVertexValue(newComponent); } } }
/** * Returns a new GradoopId * * @return new GradoopId */ public static GradoopId get() { return new GradoopId(dateToTimestampSeconds(new Date()), MACHINE_IDENTIFIER, PROCESS_IDENTIFIER, NEXT_COUNTER.getAndIncrement(), false); }
/** * Returns the Gradoop ID represented by a specified hexadecimal string. * <p> * Note: Implementation taken from org.bson.types.ObjectId * * @param string hexadecimal GradoopId representation * @return GradoopId */ public static GradoopId fromString(String string) { if (!GradoopId.isValid(string)) { throw new IllegalArgumentException( "invalid hexadecimal representation of a GradoopId: [" + string + "]"); } byte[] b = new byte[12]; for (int i = 0; i < b.length; i++) { b[i] = (byte) Integer.parseInt(string.substring(i * 2, i * 2 + 2), 16); } return new GradoopId(b); }
@Test public void testMultiColumn() throws Exception { GradoopId v0 = GradoopId.get(); GradoopId v1 = GradoopId.get(); Embedding embedding = createEmbedding(v0, v1); ExtractJoinColumns udf = new ExtractJoinColumns(Arrays.asList(0, 1)); Assert.assertEquals( ArrayUtils.toString(v0.toByteArray()) + ArrayUtils.toString(v1.toByteArray()), udf.getKey(embedding) ); }
@Test public void testGetRawBytes() { GradoopId originalId = GradoopId.get(); assertEquals(GradoopId.ID_SIZE, originalId.toByteArray().length); assertEquals( "Reconstruction failed", originalId, GradoopId.fromByteArray(originalId.toByteArray()) ); }
@Test public void testFromString() { GradoopId originalId = GradoopId.get(); GradoopId fromStringId = GradoopId.fromString(originalId.toString()); assertEquals("reconstruction from string failed", originalId, fromStringId); }
@Override public Edge map(String csvLine) { String[] tokens = split(csvLine, 5); return edgeFactory.initEdge(GradoopId.fromString(tokens[0]), tokens[3], GradoopId.fromString(tokens[1]), GradoopId.fromString(tokens[2]), parseProperties(MetaDataSource.EDGE_TYPE, tokens[3], tokens[4])); } }
@Override public GraphHeadString map(GraphHead graphHead) throws Exception { return new GraphHeadString(graphHead.getId(), graphHead.getId().toString()); } }
GradoopId inputId = GradoopId.get(); inputId.write(new DataOutputViewStreamWrapper(outputStream)); outputStream.flush(); byte[] writtenBytes = outputStream.toByteArray(); inputId.copy(inputView, outputView); byte[] writtenBytesOfCopy = outputStreamForCopy.toByteArray(); outputView.close(); DataInputViewStreamWrapper inputViewFromCopiedData = new DataInputViewStreamWrapper(inputStreamFromCopiedData); GradoopId copy = new GradoopId(); copy.read(inputViewFromCopiedData); inputStreamFromCopiedData.close(); assertEquals(inputId, copy);
/** * Test the {@link GradoopId#min(GradoopId, GradoopId)} method. */ @Test public void testMin() { GradoopId first = GradoopId.get(); GradoopId second = GradoopId.get(); GradoopId min = GradoopId.min(first, second); assertTrue("First ID is smaller then the minimum.", first.compareTo(min) >= 0); assertTrue("Second ID is smaller then the minimum.", second.compareTo(min) >= 0); assertTrue(first == min || second == min); } }
/** * Returns the wrapped value as {@code GradoopId}. * * @return {@code GradoopId} value */ public GradoopId getGradoopId() { return GradoopId.fromByteArray( Arrays.copyOfRange(rawBytes, OFFSET, GradoopId.ID_SIZE + OFFSET)); }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Element that = (Element) o; return !(id != null ? !id.equals(that.id) : that.id != null); }
/** * Compares the given GradoopIds and returns the smaller one. It both are equal, the first * argument is returned. * * @param first first GradoopId * @param second second GradoopId * @return smaller GradoopId or first if equal */ public static GradoopId min(GradoopId first, GradoopId second) { int comparison = first.compareTo(second); return comparison == 0 ? first : (comparison < 0 ? first : second); }
@Test public void testFromBytes() { int randomTime = ThreadLocalRandom.current().nextInt(); int randomMachineId = ThreadLocalRandom.current().nextInt(0, 16777215); short randomProcessId = (short) ThreadLocalRandom.current().nextInt(0, Short.MAX_VALUE); int randomCounter = ThreadLocalRandom.current().nextInt(0, 16777215); GradoopId expectedId = new GradoopId(randomTime, randomMachineId, randomProcessId, randomCounter); byte[] bytes = new byte[GradoopId.ID_SIZE]; ByteBuffer buffer = ByteBuffer.wrap(bytes); buffer.putInt(randomTime); byte b1; byte b2; byte b3; b3 = (byte) (randomMachineId & 0xFF); b2 = (byte) ((randomMachineId >> 8) & 0xFF); b1 = (byte) ((randomMachineId >> 16) & 0xFF); buffer.put(b1); buffer.put(b2); buffer.put(b3); buffer.putShort(randomProcessId); b3 = (byte) (randomCounter & 0xFF); b2 = (byte) ((randomCounter >> 8) & 0xFF); b1 = (byte) ((randomCounter >> 16) & 0xFF); buffer.put(b1); buffer.put(b2); buffer.put(b3); GradoopId newId = GradoopId.fromByteArray(bytes); assertEquals(expectedId, newId); }
/** * Returns the Gradoop ID represented by a byte array * * @param bytes byte representation * @return Gradoop ID */ public static GradoopId fromByteArray(byte[] bytes) { return new GradoopId(bytes); }