Skip to content

Commit

Permalink
add generics
Browse files Browse the repository at this point in the history
  • Loading branch information
MarieTask committed Jan 30, 2024
1 parent ea61f48 commit 34b5744
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 13 deletions.
8 changes: 4 additions & 4 deletions app/src/main/java/hexlet/code/schemas/BaseSchema.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import java.util.List;
import java.util.function.Predicate;

public abstract class BaseSchema {
protected final List<Predicate<Object>> conditions;
public abstract class BaseSchema<T> {
protected final List<Predicate<T>> conditions;
private Boolean isRequired = false;

protected BaseSchema() {
Expand All @@ -16,10 +16,10 @@ protected BaseSchema() {
protected final void setIsRequired() {
this.isRequired = Boolean.TRUE;
}
protected final void addCondition(Predicate<Object> condition) {
protected final void addCondition(Predicate<T> condition) {
conditions.add(condition);
}
public final boolean isValid(Object obj) {
public final boolean isValid(T obj) {
if (!isRequired && !(conditions.get(0).test(obj))) {
System.out.println(conditions.get(0));
return true;
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/hexlet/code/schemas/MapSchema.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.util.Map;

public class MapSchema extends BaseSchema {
public class MapSchema<String, T> extends BaseSchema<T> {

public MapSchema() {
super.conditions.add(s -> s instanceof Map);
Expand All @@ -20,8 +20,8 @@ public MapSchema sizeof(int countPairs) {
super.addCondition(s -> ((Map<?, ?>) s).size() == countPairs);
return this;
}
public MapSchema shape(Map<String, BaseSchema> map) {
map.keySet().forEach(key -> super.addCondition(s -> map.get(key).isValid(((Map<?, ?>) s).get(key))));
public MapSchema shape(Map<String, BaseSchema<T>> map) {
map.keySet().forEach(key -> super.addCondition(s -> map.get(key).isValid((T) ((Map<?, ?>) s).get(key))));
return this;
}
}
6 changes: 3 additions & 3 deletions app/src/main/java/hexlet/code/schemas/NumberSchema.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.util.function.Predicate;

public class NumberSchema extends BaseSchema {
public class NumberSchema<T> extends BaseSchema<T> {

public NumberSchema() {
super.conditions.add(s -> s instanceof Integer);
Expand All @@ -14,13 +14,13 @@ public NumberSchema required() {
}

public NumberSchema positive() {
Predicate<Object> posConditions = s -> (int) s > 0;
Predicate<T> posConditions = s -> (int) s > 0;
addCondition(posConditions);
return this;
}

public NumberSchema range(int min, int max) {
Predicate<Object> numRange = s -> (int) s >= min && (int) s <= max;
Predicate<T> numRange = s -> (int) s >= min && (int) s <= max;
addCondition(numRange);
return this;
}
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/hexlet/code/schemas/StringSchema.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import java.util.Objects;
import java.util.function.Predicate;

public class StringSchema extends BaseSchema {
public class StringSchema<T> extends BaseSchema<T> {

public StringSchema() {
super.conditions.add(s -> !(Objects.equals(s, "")) && s instanceof String);
Expand All @@ -18,13 +18,13 @@ public StringSchema minLength(int userNumber) {
if (userNumber < 0) {
throw new IndexOutOfBoundsException("Index less than zero!");
}
Predicate<Object> stringLength = s -> ((String) s).length() >= userNumber;
Predicate<T> stringLength = s -> ((String) s).length() >= userNumber;
super.addCondition(stringLength);
return this;
}

public StringSchema contains(String userData) {
Predicate<Object> containsString = s -> ((String) s).contains(userData);
Predicate<T> containsString = s -> ((String) s).contains(userData);
super.addCondition(containsString);
return this;
}
Expand Down

0 comments on commit 34b5744

Please sign in to comment.