Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 14 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ this project in two ways:
<dependency>
<groupId>com.github.jonpereiradev</groupId>
<artifactId>diff-objects</artifactId>
<version>1.1.0</version>
<version>1.3.0</version>
</dependency>
```

Expand Down Expand Up @@ -48,24 +48,26 @@ public class Email {
```

```java
import com.github.jonpereiradev.diffobjects.DiffConfig;

public class Main {

public static void main(String[] args) {
User u1 = new User("user1", "123456", LocalDate.now().minusDays(1), true);
User u2 = new User("user2", "12345678", LocalDate.now(), true);

u1.getEmails().add(new Email("user@gmail.com", true));
u2.getEmails().add(new Email("user@gmail.com", false));
DiffConfiguration configuration = DiffBuilder
.map(User.class)
.mapping("login")
.mapping("password")
.mapping("emails", "description")
.configuration();

DiffConfig configuration = DiffBuilder
.map(User.class)
.mapping("login")
.mapping("password")
.mapping("emails", "description")
.configuration();

List<DiffResult> diffs = DiffObjects.forClass(User.class).diff(u1, u2, configuration);

for (DiffResult diff : diffs) {
if (!diff.isEquals()) {
System.out.println("Field: " + diff.getProperties().get("field"));
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.jonpereiradev</groupId>
<artifactId>diff-objects</artifactId>
<version>1.2.0</version>
<version>1.3.0</version>
<packaging>jar</packaging>
<name>${project.groupId}:${project.artifactId}</name>
<description>API to compare the difference between two objects</description>
Expand Down
25 changes: 25 additions & 0 deletions src/main/java/com/github/jonpereiradev/diffobjects/DiffConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.github.jonpereiradev.diffobjects;


import com.github.jonpereiradev.diffobjects.strategy.DiffMetadata;

import java.util.List;


/**
* Contract of the diff config object that maps the properties being check for diff.
*
* @author Jonathan Pereira
* @version 1.2.0
* @since 1.0.0
*/
public interface DiffConfig {

/**
* Build the configuration for the instance.
*
* @return the metadata generated by the instance.
*/
List<DiffMetadata> build();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.github.jonpereiradev.diffobjects;


import com.github.jonpereiradev.diffobjects.annotation.DiffOrder;
import com.github.jonpereiradev.diffobjects.builder.DiffBuilderContext;
import com.github.jonpereiradev.diffobjects.strategy.DiffMetadata;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;


/**
* Responsible for generate the configuration of the instance.
*
* @author Jonathan Pereira
* @since 1.0.0
*/

public final class DiffConfigImpl implements DiffConfig {

private final DiffBuilderContext<?> context;
private final List<DiffMetadata> metadataList;

public DiffConfigImpl(DiffBuilderContext<?> context) {
this.context = context;
this.metadataList = new ArrayList<>(context.getMetadataMap().size());
}

/**
* Gets the configuration for the instance.
*
* @return the metadata generated by the instance.
*/
@Override
public List<DiffMetadata> build() {
if (metadataList.isEmpty()) {
boolean sortable = false;

for (Map.Entry<String, DiffMetadata> entry : context.getMetadataMap().entrySet()) {
DiffOrder annotation = entry.getValue().getMethod().getAnnotation(DiffOrder.class);

if (annotation != null) {
entry.getValue().setOrder(annotation.value());
sortable = true;
}

metadataList.add(entry.getValue());
}

if (sortable) {
Collections.sort(metadataList);
}
}

return metadataList;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ public class DiffException extends RuntimeException {
public DiffException(String message) {
super(message);
}

}
Loading