Skip to content

Commit

Permalink
refact: update parameter metadata using record style
Browse files Browse the repository at this point in the history
Signed-off-by: Otavio Santana <otaviopolianasantana@gmail.com>
  • Loading branch information
otaviojava committed Jul 30, 2023
1 parent b2b030c commit 282aa76
Show file tree
Hide file tree
Showing 10 changed files with 60 additions and 60 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ private <T> T convertEntityByConstructor(List<Column> columns, EntityMetadata ma
ConstructorBuilder builder = ConstructorBuilder.of(mapping.constructor());
for (ParameterMetaData parameter : builder.getParameters()) {
Optional<Column> column = columns.stream()
.filter(c -> c.name().equals(parameter.getName()))
.filter(c -> c.name().equals(parameter.name()))
.findFirst();
column.ifPresentOrElse(c -> {
ParameterConverter converter = ParameterConverter.of(parameter);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ void convert(ColumnEntityConverter converter,
ParameterMetaData metaData,
ConstructorBuilder builder) {

metaData.getConverter().ifPresentOrElse(c -> {
metaData.converter().ifPresentOrElse(c -> {
Object value = converter.getConverters().get(c).convertToEntityAttribute(column.get());
builder.add(value);
}, () -> builder.add(column.get(metaData.getType())));
}, () -> builder.add(column.get(metaData.type())));

}
}, ENTITY {
Expand All @@ -52,12 +52,12 @@ void convert(ColumnEntityConverter converter, Column column, ParameterMetaData m
columns.add(Column.of(entry.getKey().toString(), entry.getValue()));
}

Object entity = converter.toEntity(metaData.getType(), columns);
Object entity = converter.toEntity(metaData.type(), columns);
builder.add(entity);

} else {
List<Column> columns = column.get(new TypeReference<>() {});
Object entity = converter.toEntity(metaData.getType(), columns);
Object entity = converter.toEntity(metaData.type(), columns);
builder.add(entity);
}
}
Expand All @@ -84,7 +84,7 @@ abstract void convert(ColumnEntityConverter converter,
ConstructorBuilder builder);

static ParameterConverter of(ParameterMetaData parameter) {
return switch (parameter.getParamType()) {
return switch (parameter.paramType()) {
case COLLECTION -> COLLECTION;
case ENTITY -> ENTITY;
default -> DEFAULT;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,17 @@ class DefaultParameterMetaData implements ParameterMetaData {
}

@Override
public MappingType getParamType() {
public MappingType paramType() {
return mappingType;
}

@Override
public String getName() {
public String name() {
return name;
}

@Override
public Class<?> getType() {
public Class<?> type() {
return type;
}

Expand All @@ -63,7 +63,7 @@ public boolean isId() {
}

@Override
public <X, Y, T extends AttributeConverter<X, Y>> Optional<Class<? extends AttributeConverter<X, Y>>> getConverter() {
public <X, Y, T extends AttributeConverter<X, Y>> Optional<Class<? extends AttributeConverter<X, Y>>> converter() {
return Optional.ofNullable((Class<? extends AttributeConverter<X, Y>>)converter);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public Class<?> getElementType() {
}

public Collection<?> getCollectionInstance() {
Class<?> type = getType();
Class<?> type = type();
final CollectionSupplier supplier = ServiceLoader.load(CollectionSupplier.class)
.stream()
.map(ServiceLoader.Provider::get)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,21 +32,21 @@ public interface ParameterMetaData {
*
* @return the {@link MappingType}
*/
MappingType getParamType();
MappingType paramType();

/**
* Returns the name of the field that can be either the field name
* or {@link Column#value()}
*
* @return the name
*/
String getName();
String name();

/**
* @return a {@code Class} object identifying the declared
* type of the entity represented by this object
*/
Class<?> getType();
Class<?> type();

/**
* Returns true is the field is annotated with {@link Id}
Expand All @@ -62,5 +62,5 @@ public interface ParameterMetaData {
* @param <T> the Converter
* @return the converter if present
*/
<X, Y, T extends AttributeConverter<X, Y>> Optional<Class<? extends AttributeConverter<X, Y>>> getConverter();
<X, Y, T extends AttributeConverter<X, Y>> Optional<Class<? extends AttributeConverter<X, Y>>> converter();
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public void shouldReturnComputerEntityConstructor() {
List<ParameterMetaData> parameters = metadata.getParameters();
assertEquals(5, parameters.size());
List<String> names = parameters.stream()
.map(ParameterMetaData::getName)
.map(ParameterMetaData::name)
.toList();

assertThat(names).contains("_id", "name", "age", "model", "price");
Expand All @@ -84,7 +84,7 @@ public void shouldReturnBookUserEntityConstructor() {
List<ParameterMetaData> parameters = metadata.getParameters();
assertEquals(3, parameters.size());
List<String> names = parameters.stream()
.map(ParameterMetaData::getName)
.map(ParameterMetaData::name)
.toList();

assertThat(names).contains("_id", "native_name", "books");
Expand All @@ -96,7 +96,7 @@ public void shouldReturnSmartphoneEntityConstructor() {
List<ParameterMetaData> parameters = metadata.getParameters();
assertEquals(2, parameters.size());
List<String> names = parameters.stream()
.map(ParameterMetaData::getName)
.map(ParameterMetaData::name)
.toList();

assertThat(names).contains("_id", "owner");
Expand All @@ -108,7 +108,7 @@ public void shouldReturnPetOwnerEntityConstructor() {
List<ParameterMetaData> parameters = metadata.getParameters();
assertEquals(3, parameters.size());
List<String> names = parameters.stream()
.map(ParameterMetaData::getName)
.map(ParameterMetaData::name)
.toList();

assertThat(names).contains("_id", "name", "animal");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,10 @@ public void shouldConvertIdParameter() {
ParameterMetaData id = ParameterMetaDataBuilder.of(constructor.getParameters()[0]);
Assertions.assertNotNull(id);
Assertions.assertTrue(id.isId());
Assertions.assertEquals("_id", id.getName());
Assertions.assertEquals(Long.class, id.getType());
Assertions.assertEquals(MappingType.DEFAULT, id.getParamType());
Assertions.assertTrue(id.getConverter().isEmpty());
Assertions.assertEquals("_id", id.name());
Assertions.assertEquals(Long.class, id.type());
Assertions.assertEquals(MappingType.DEFAULT, id.paramType());
Assertions.assertTrue(id.converter().isEmpty());
}

@Test
Expand All @@ -53,10 +53,10 @@ public void shouldConvertDefaultParameterWithoutDefinedName() {
ParameterMetaData name = ParameterMetaDataBuilder.of(constructor.getParameters()[1]);
Assertions.assertNotNull(name);
Assertions.assertFalse(name.isId());
Assertions.assertEquals("owner", name.getName());
Assertions.assertEquals(String.class, name.getType());
Assertions.assertEquals(MappingType.DEFAULT, name.getParamType());
Assertions.assertTrue(name.getConverter().isEmpty());
Assertions.assertEquals("owner", name.name());
Assertions.assertEquals(String.class, name.type());
Assertions.assertEquals(MappingType.DEFAULT, name.paramType());
Assertions.assertTrue(name.converter().isEmpty());
}

@Test
Expand All @@ -65,10 +65,10 @@ public void shouldConvertDefaultParameter() {
ParameterMetaData name = ParameterMetaDataBuilder.of(constructor.getParameters()[1]);
Assertions.assertNotNull(name);
Assertions.assertFalse(name.isId());
Assertions.assertEquals("name", name.getName());
Assertions.assertEquals(String.class, name.getType());
Assertions.assertEquals(MappingType.DEFAULT, name.getParamType());
Assertions.assertTrue(name.getConverter().isEmpty());
Assertions.assertEquals("name", name.name());
Assertions.assertEquals(String.class, name.type());
Assertions.assertEquals(MappingType.DEFAULT, name.paramType());
Assertions.assertTrue(name.converter().isEmpty());
}

@Test
Expand All @@ -77,11 +77,11 @@ public void shouldConvertConverterParameter() {
ParameterMetaData price = ParameterMetaDataBuilder.of(constructor.getParameters()[4]);
Assertions.assertNotNull(price);
Assertions.assertFalse(price.isId());
Assertions.assertEquals("price", price.getName());
Assertions.assertEquals(Money.class, price.getType());
Assertions.assertEquals(MappingType.DEFAULT, price.getParamType());
Assertions.assertFalse(price.getConverter().isEmpty());
Class<? extends AttributeConverter<Object, Object>> converter = price.getConverter().orElseThrow();
Assertions.assertEquals("price", price.name());
Assertions.assertEquals(Money.class, price.type());
Assertions.assertEquals(MappingType.DEFAULT, price.paramType());
Assertions.assertFalse(price.converter().isEmpty());
Class<? extends AttributeConverter<Object, Object>> converter = price.converter().orElseThrow();
assertEquals(MoneyConverter.class, converter);
}
//parameter wit collection
Expand All @@ -94,10 +94,10 @@ public void shouldConvertEntityParameter() {
ParameterMetaData animal = ParameterMetaDataBuilder.of(constructor.getParameters()[2]);
Assertions.assertNotNull(animal);
Assertions.assertFalse(animal.isId());
Assertions.assertEquals("animal", animal.getName());
Assertions.assertEquals(Animal.class, animal.getType());
Assertions.assertEquals(MappingType.ENTITY, animal.getParamType());
Assertions.assertTrue(animal.getConverter().isEmpty());
Assertions.assertEquals("animal", animal.name());
Assertions.assertEquals(Animal.class, animal.type());
Assertions.assertEquals(MappingType.ENTITY, animal.paramType());
Assertions.assertTrue(animal.converter().isEmpty());
}

@Test
Expand All @@ -106,10 +106,10 @@ public void shouldConvertCollectionParameter() {
ParameterMetaData books = ParameterMetaDataBuilder.of(constructor.getParameters()[2]);
Assertions.assertNotNull(books);
Assertions.assertFalse(books.isId());
Assertions.assertEquals("books", books.getName());
Assertions.assertEquals(List.class, books.getType());
Assertions.assertEquals(MappingType.COLLECTION, books.getParamType());
Assertions.assertTrue(books.getConverter().isEmpty());
Assertions.assertEquals("books", books.name());
Assertions.assertEquals(List.class, books.type());
Assertions.assertEquals(MappingType.COLLECTION, books.paramType());
Assertions.assertTrue(books.converter().isEmpty());
assertEquals(GenericParameterMetaData.class, books.getClass());
GenericParameterMetaData generic = (GenericParameterMetaData) books;
TypeSupplier<?> typeSupplier = generic.getTypeSupplier();
Expand All @@ -122,10 +122,10 @@ public void shouldConvertMapParameter() {
ParameterMetaData map = ParameterMetaDataBuilder.of(constructor.getParameters()[0]);
Assertions.assertNotNull(map);
Assertions.assertFalse(map.isId());
Assertions.assertEquals("map", map.getName());
Assertions.assertEquals(Map.class, map.getType());
Assertions.assertEquals(MappingType.MAP, map.getParamType());
Assertions.assertTrue(map.getConverter().isEmpty());
Assertions.assertEquals("map", map.name());
Assertions.assertEquals(Map.class, map.type());
Assertions.assertEquals(MappingType.MAP, map.paramType());
Assertions.assertTrue(map.converter().isEmpty());
assertEquals(GenericParameterMetaData.class, map.getClass());
GenericParameterMetaData generic = (GenericParameterMetaData) map;
TypeSupplier<?> typeSupplier = generic.getTypeSupplier();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ private <T> T convertEntityByConstructor(List<Document> documents, EntityMetadat
ConstructorBuilder builder = ConstructorBuilder.of(mapping.constructor());
for (ParameterMetaData parameter : builder.getParameters()) {
Optional<Document> document = documents.stream()
.filter(c -> c.name().equals(parameter.getName()))
.filter(c -> c.name().equals(parameter.name()))
.findFirst();
document.ifPresentOrElse(c -> {
ParameterConverter converter = ParameterConverter.of(parameter);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ void convert(DocumentEntityConverter converter,
ParameterMetaData metaData,
ConstructorBuilder builder) {

metaData.getConverter().ifPresentOrElse(c -> {
metaData.converter().ifPresentOrElse(c -> {
Object value = converter.getConverters().get(c).convertToEntityAttribute(document.get());
builder.add(value);
}, () -> builder.add(document.get(metaData.getType())));
}, () -> builder.add(document.get(metaData.type())));

}
}, ENTITY {
Expand All @@ -52,13 +52,13 @@ void convert(DocumentEntityConverter converter, Document document, ParameterMeta
documents.add(Document.of(entry.getKey().toString(), entry.getValue()));
}

Object entity = converter.toEntity(metaData.getType(), documents);
Object entity = converter.toEntity(metaData.type(), documents);
builder.add(entity);

} else {
List<Document> documents = document.get(new TypeReference<>() {
});
Object entity = converter.toEntity(metaData.getType(), documents);
Object entity = converter.toEntity(metaData.type(), documents);
builder.add(entity);
}
}
Expand All @@ -85,7 +85,7 @@ abstract void convert(DocumentEntityConverter converter,
ConstructorBuilder builder);

static ParameterConverter of(ParameterMetaData parameter) {
return switch (parameter.getParamType()) {
return switch (parameter.paramType()) {
case COLLECTION -> COLLECTION;
case ENTITY -> ENTITY;
default -> DEFAULT;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,27 +69,27 @@ public T get() {
private void feedId(ConstructorBuilder builder, ParameterMetaData parameter) {
Object vertexId = vertex.id();
if (Objects.nonNull(vertexId)) {
parameter.getConverter().ifPresentOrElse(c -> {
parameter.converter().ifPresentOrElse(c -> {
AttributeConverter attributeConverter = this.converters.get(c);
Object attributeConverted = attributeConverter.convertToEntityAttribute(vertexId);
Value value = Value.of(attributeConverted);
builder.add(value.get(parameter.getType()));
}, () -> builder.add(Value.of(vertexId).get(parameter.getType())));
builder.add(value.get(parameter.type()));
}, () -> builder.add(Value.of(vertexId).get(parameter.type())));
} else {
builder.addEmptyParameter();
}
}

private void feedRegularFeilds(ConstructorBuilder builder, List<Property<?>> properties, ParameterMetaData parameter) {
Optional<Property<?>> property = properties.stream()
.filter(c -> c.key().equals(parameter.getName()))
.filter(c -> c.key().equals(parameter.name()))
.findFirst();
property.ifPresentOrElse(p -> parameter.getConverter().ifPresentOrElse(c -> {
property.ifPresentOrElse(p -> parameter.converter().ifPresentOrElse(c -> {
Object value = this.converters.get(c).convertToEntityAttribute(p.value());
builder.add(value);
}, () -> {
Value value = Value.of(p.value());
builder.add(value.get(parameter.getType()));
builder.add(value.get(parameter.type()));
}), builder::addEmptyParameter);
}

Expand Down

0 comments on commit 282aa76

Please sign in to comment.