Skip to content

Commit

Permalink
work on seperating concerns
Browse files Browse the repository at this point in the history
  • Loading branch information
root committed Jun 11, 2020
1 parent 851cf06 commit 2f657a4
Show file tree
Hide file tree
Showing 14 changed files with 427 additions and 328 deletions.
5 changes: 4 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@

<groupId>com.github.vincemann</groupId>
<artifactId>ez-compare</artifactId>
<version>1.0.0-SNAPSHOT.1</version>
<version>1.0.0-SNAPSHOT.2</version>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.github.vincemann.ezcompare;

import lombok.AllArgsConstructor;
import org.checkerframework.checker.units.qual.C;

@AllArgsConstructor
public abstract class AbstractConfigModifier<M extends AbstractConfigModifier, C extends RapidEqualsBuilder.CompareConfig> {

private C config;

public M reflectUpToClass(Class<?> value) {
config.reflectUpToClass = value;
return (M) this;
}

public M fullDiff(boolean value) {
config.minimalDiff = value;
return (M) this;
}

protected C getConfig() {
return config;
}
}
97 changes: 97 additions & 0 deletions src/main/java/com/github/vincemann/ezcompare/Comparator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package com.github.vincemann.ezcompare;

import com.github.hervian.reflection.Types;
import com.github.vincemann.ezcompare.util.BeanUtils;
import com.github.vincemann.ezcompare.util.ReflectionUtils;
import com.google.common.collect.Sets;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.HashSet;
import java.util.Set;

import static com.github.vincemann.ezcompare.util.MethodNameUtil.propertyNameOf;

/**
* Factory for {@link Comparison}.
* Holds Global Compare Configuration.
* Supports local and global Configuration for each mode:
* <p>
* FullCompare:
* local: {@link FullCompareOptionsConfigurer#configureFullCompare(FullCompareOptionsConfigurer.FullCompareConfigConfigurer)}
* global: {@link this#FULL_COMPARE_GLOBAL_CONFIG}
*
* @see FullCompareConfig
*
* <p>
* PartialCompare:
* local: {@link PartialCompareOptionsConfigurer#configurePartialCompare(PartialCompareOptionsConfigurer.PartialCompareConfigConfigurer)}
* global: {@link this#PARTIAL_COMPARE_GLOBAL_CONFIG}
* @see PartialCompareConfig
* <p>
* <p>
*/
public class Comparator {

/**
* Comparison is initialized with Global Config, if present.
* Otherwise default Configs get created.
*/
private static PartialCompareConfig PARTIAL_COMPARE_GLOBAL_CONFIG;
private static FullCompareConfig FULL_COMPARE_GLOBAL_CONFIG;

private Comparator() {
}

/**
* Create with this method.
*/
public static ActorConfigurer compare(Object root) {
return Comparison.builder()
.root(root)
.fullCompareConfig(FullCompareConfigFactory.buildBasedOnGlobal().build())
.partialCompareConfig(PartialCompareConfigFactory.buildBasedOnGlobal().build())
.build();
}

/**
* Use {@link FullCompareConfig#modify()} for modification.
*/
public static FullCompareConfig getFullCompareGlobalConfig() {
if (FULL_COMPARE_GLOBAL_CONFIG == null) {
FULL_COMPARE_GLOBAL_CONFIG = new FullCompareConfig();
}
return FULL_COMPARE_GLOBAL_CONFIG;
}

public static void setFullCompareGlobalConfig(FullCompareConfig fullCompareGlobalConfig) {
FULL_COMPARE_GLOBAL_CONFIG = fullCompareGlobalConfig;
}

/**
* Use {@link PartialCompareConfig#modify()}for modification.
*/
public static PartialCompareConfig getPartialCompareGlobalConfig() {
if (PARTIAL_COMPARE_GLOBAL_CONFIG == null) {
PARTIAL_COMPARE_GLOBAL_CONFIG = new PartialCompareConfig();
}
return PARTIAL_COMPARE_GLOBAL_CONFIG;
}

public static void setPartialCompareGlobalConfig(PartialCompareConfig partialCompareGlobalConfig) {
PARTIAL_COMPARE_GLOBAL_CONFIG = partialCompareGlobalConfig;
}

/**
* Resets global configuration to default config.
*/
public static void resetGlobalConfig() {
setFullCompareGlobalConfig(FullCompareConfigFactory.buildDefault().build());
setPartialCompareGlobalConfig(PartialCompareConfigFactory.buildDefault().build());
}



}
Loading

0 comments on commit 2f657a4

Please sign in to comment.