package org.vertexium.examples.dataset;
import org.vertexium.Authorizations;
import org.vertexium.Graph;
import org.vertexium.Visibility;
import org.vertexium.util.VertexiumLogger;
import org.vertexium.util.VertexiumLoggerFactory;
import java.io.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.zip.GZIPInputStream;
public class BabyNamesDataset extends Dataset {
private static final VertexiumLogger LOGGER = VertexiumLoggerFactory.getLogger(BabyNamesDataset.class);
public void load(Graph graph, int numberOfVerticesToCreate, String[] visibilities, Authorizations authorizations) throws IOException {
LOGGER.debug("populating data count: %d", numberOfVerticesToCreate);
File file = new File("../baby-names.txt.gz");
BufferedReader br = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(file))));
try {
int i = 0;
String line;
while (i < numberOfVerticesToCreate && (line = br.readLine()) != null) {
if (i % 1000 == 0) {
LOGGER.debug("populating data %d/%d", i, numberOfVerticesToCreate);
}
String[] lineParts = line.split(",");
if (lineParts.length != 4) {
continue;
}
int year = Integer.parseInt(lineParts[0]);
String name = lineParts[1];
String sex = lineParts[2];
int count = Integer.parseInt(lineParts[3]);
Visibility visibility = new Visibility(visibilities[i % visibilities.length]);
GregorianCalendar c = new GregorianCalendar();
c.set(year, Calendar.JANUARY, 1, 1, 1, 1);
c.set(Calendar.MILLISECOND, 0);
graph.prepareVertex(visibility)
.setProperty("year", c.getTime(), visibility)
.setProperty("name", name, visibility)
.setProperty("sex", sex, visibility)
.setProperty("count", count, visibility)
.save(authorizations);
i++;
}
} finally {
br.close();
}
graph.flush();
LOGGER.debug("populated data");
}
}