EntityInfoHelper(EntityInfoBuilder<?> builder) { entityInfo = builder.build(); }
public static void main(String[] args) throws FileNotFoundException, IOException { CitiBikeReader<Trip> reader = new CitiBikeReader<>("/tmp", str -> new TripParser(str)); EntityInfoBuilder<Trip> entityInfo = new EntityInfoBuilder<>(Trip.class); entityInfo.addFields("bikeId", "tripduration", "starttime", "startStationId", "stoptime", "endStationId", "userType", "birthYear", "gender"); CsvConfiguration<Trip> csvConfiguration = new Builder<Trip>(entityInfo.build()).build(); CsvWriter<Trip> csvWriter = new CsvWriter<>(csvConfiguration); try (FileOutputStream fos = new FileOutputStream(new File("/tmp/trips.csv"))) { reader.forEachCsvInZip(trips -> { try { csvWriter.writeAll(fos, trips); } catch (IOException e) { e.printStackTrace(); } }); } }
.addColumn("birth_year", INT, map -> map.get("BirthYear")) .addColumn("gender", CHAR, map -> map.get("Gender")) .build();
.addColumn("birth_year", INT, map -> map.get(13)) .addColumn("gender", CHAR, map -> map.get(14)) .build();
@Test public void emptyCollectionOnlyGeneratesHeader() throws IOException { CsvConfiguration<SomeEntity> config = new CsvConfiguration<>(createBuilderForSomeEntity().build()); String result = writeCsvToString(config, Collections.emptyList()); assertEquals("name,age" + ls, result); }
public static void main(String[] args) throws FileNotFoundException, IOException { CitiBikeReader<Trip> reader = new CitiBikeReader<>("/tmp", str -> new TripParser(str)); EntityInfoBuilder<Trip> entityInfo = new EntityInfoBuilder<>(Trip.class); entityInfo.addFields("bikeId", "starttime", "startStationId", "stoptime", "endStationId", "userType"); CsvConfiguration<Trip> csvConfiguration = new Builder<>(Trip.class) .entityInfo(entityInfo.build()) .alwaysDelimitText(true) .fieldSeparator(';') .lineDelimiter("\n") .textDelimiter('\'') .header(false) .build(); CsvWriter<Trip> csvWriter = new CsvWriter<>(csvConfiguration); try (FileOutputStream fos = new FileOutputStream(new File("/tmp/trips.csv"))) { reader.forEachCsvInZip(trips -> { try { csvWriter.writeAll(fos, trips); } catch (IOException e) { e.printStackTrace(); } }); } }
@Test public void emptyCollectionWithoutHeaderIsEmpty() throws IOException { Builder<SomeEntity> config = new Builder<>(createBuilderForSomeEntity().build()); config.header(false); String result = writeCsvToString(config.build(), Collections.emptyList()); assertEquals("", result); }
@Test public void elementIsAfterHeader() throws IOException { CsvConfiguration<SomeEntity> config = new CsvConfiguration<>(createBuilderForSomeEntity().build()); String result = writeCsvToString(config, new SomeEntity("John", 10)); assertEquals("name,age" + ls + "John,10" + ls, result); }
@Test public void elementWithoutHeaderIsAlone() throws IOException { Builder<SomeEntity> config = new Builder<>(createBuilderForSomeEntity().build()); config.header(false); String result = writeCsvToString(config.build(), new SomeEntity("John", 10)); assertEquals("John,10" + ls, result); }
@Test public void columnsMantainsDeclaredOrder() throws IOException { EntityInfoBuilder<SomeEntity> entityBuilder = new EntityInfoBuilder<>(SomeEntity.class); entityBuilder.addColumn("age", FieldTypeEnum.INT, SomeEntity::getAge); entityBuilder.addColumn("name", FieldTypeEnum.STRING, SomeEntity::getName); CsvConfiguration<SomeEntity> config = new CsvConfiguration<>(entityBuilder.build()); String result = writeCsvToString(config, new SomeEntity("John", 10)); assertEquals("age,name" + ls + "10,John" + ls, result); }
private static EntityInfo configureEntityMapping() { EntityInfoBuilder<Trip> entityInfo = new EntityInfoBuilder<>(Trip.class); entityInfo.addField("bikeId"); entityInfo.addField("tripduration"); entityInfo.addColumn("startdate", FieldTypeEnum.STRING, trip -> toDate(trip.getStarttime())); entityInfo.addField("startStationId"); entityInfo.addColumn("stopdate", FieldTypeEnum.STRING, trip -> toDate(trip.getStoptime())); entityInfo.addField("endStationId"); entityInfo.addField("userType"); entityInfo.addColumn("age", FieldTypeEnum.INT, trip -> getAge(trip.getBirthYear())); entityInfo.addColumn("gender", FieldTypeEnum.STRING, trip -> getGender(trip.getGender())); return entityInfo.build(); }
public static void main(String[] args) throws IOException, SQLException { Supplier<Connection> connectionSuplier = new MySqlTestConnectionProvider(); try (Connection connection = connectionSuplier.get()) { TableHelper.createTableDistance(connection); CitiBikeReader<Trip> reader = new CitiBikeReader<>("/tmp", str -> new TripParser(str)); EntityInfo entityInfo = new EntityInfoBuilder<>(Trip.class, "bike_trip_distance").addField("id", "id", true) .addField("tripDuration", "tripduration").addField("bikeId", "bike_id") .addField("userType", "user_type").addField("birthYear", "birth_year").addField("gender", "gender") .addColumn("distance", FieldTypeEnum.DOUBLE, trip -> distance(trip.getStartStation().getLatitude(), trip.getStartStation().getLongitude(), trip.getEndStation().getLatitude(), trip.getEndStation().getLongitude())) .build(); BulkInsert<Trip> bulkInsert = new LoadDataBulkInsert<>(entityInfo); reader.forEachCsvInZip(trips -> { try { bulkInsert.insertAll(connection, trips); } catch (JFleetException | SQLException e) { e.printStackTrace(); } }); } }
.addField("birthYear", "birth_year") .addField("gender", "gender") .build();
@Test public void canChangeDefaultSerializer() throws IOException { EntityInfoBuilder<SomeEntity> entityBuilder = new EntityInfoBuilder<>(SomeEntity.class); entityBuilder.addFields("name", "age"); entityBuilder.addColumn("adult", FieldTypeEnum.BOOLEAN, e -> e.getAge() >= 18); BaseTypeSerializer serializer = new BaseTypeSerializer(); serializer.add(FieldTypeEnum.BOOLEAN, (obj) -> ((Boolean) obj).booleanValue() ? "1" : "0"); Builder<SomeEntity> config = new Builder<>(entityBuilder.build()); config.typeSerializer(serializer); String result = writeCsvToString(config.build(), new SomeEntity("John", 10), new SomeEntity("Amanda", 34)); assertEquals("name,age,adult" + ls + "John,10,0" + ls + "Amanda,34,1" + ls, result); }
@Test public void canCreateSyntheticColumns() throws IOException { EntityInfoBuilder<SomeEntity> entityBuilder = new EntityInfoBuilder<>(SomeEntity.class); entityBuilder.addFields("name", "age"); entityBuilder.addColumn("adult", FieldTypeEnum.BOOLEAN, e -> e.getAge() >= 18); CsvConfiguration<SomeEntity> config = new CsvConfiguration<>(entityBuilder.build()); String result = writeCsvToString(config, new SomeEntity("John", 10), new SomeEntity("Amanda", 34)); assertEquals("name,age,adult" + ls + "John,10,false" + ls + "Amanda,34,true" + ls, result); }
@Test public void accessorCanChangeType() throws IOException { EntityInfoBuilder<SomeEntity> entityBuilder = new EntityInfoBuilder<>(SomeEntity.class); entityBuilder.addField("name"); entityBuilder.addColumn("age", FieldTypeEnum.STRING, e -> e.getAge() + " years"); entityBuilder.addColumn("adult", FieldTypeEnum.STRING, e -> e.getAge() >= 18 ? "Si" : "No"); Builder<SomeEntity> config = new Builder<>(entityBuilder.build()); String result = writeCsvToString(config.build(), new SomeEntity("John", 10), new SomeEntity("Amanda", 34)); assertEquals("name,age,adult" + ls + "John,10 years,No" + ls + "Amanda,34 years,Si" + ls, result); }