diff --git a/.gitignore b/.gitignore index 58ae9ed..8edcd08 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,3 @@ -# Created by .ignore support plugin (hsz.mobi) -target/ -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -release.properties -dependency-reduced-pom.xml -buildNumber.properties -.mvn/timing.properties -.mvn/wrapper/maven-wrapper.jar *.class *.log *.ctxt @@ -21,31 +10,68 @@ buildNumber.properties *.tar.gz *.rar hs_err_pid* -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/**/usage.statistics.xml -.idea/**/dictionaries -.idea/**/shelf -.idea/**/contentModel.xml -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml -.idea/**/dbnavigator.xml -.idea/**/gradle.xml -.idea/**/libraries +replay_pid* +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar +.project +.classpath +.idea/ cmake-build-*/ -.idea/**/mongoSettings.xml *.iws out/ .idea_modules/ atlassian-ide-plugin.xml -.idea/replstate.xml com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties fabric.properties -.idea/httpRequests -.idea/caches/build_file_checksums.ser +*~ +.fuse_hidden* +.directory +.Trash-* +.nfs* +.gradle +**/build/ +!src/**/build/ +gradle-app.setting +!gradle-wrapper.jar +!gradle-wrapper.properties +.gradletasknamecache +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db +*.stackdump +[Dd]esktop.ini +$RECYCLE.BIN/ +*.cab +*.msi +*.msix +*.msm +*.msp +*.lnk +.DS_Store +.AppleDouble +.LSOverride +Icon +._* +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk diff --git a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Parser.java b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Parser.java index 6af7067..6ffae9a 100644 --- a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Parser.java +++ b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Parser.java @@ -1,6 +1,6 @@ package dev.struchkov.haiti.utils; -import dev.struchkov.haiti.utils.domain.CompositeUrl; +import dev.struchkov.haiti.utils.container.CompositeUrl; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Strings.java b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Strings.java index bc7efb0..b405da7 100644 --- a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Strings.java +++ b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Strings.java @@ -1,9 +1,8 @@ package dev.struchkov.haiti.utils; import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; +import static dev.struchkov.haiti.utils.Checker.checkNotNull; import static dev.struchkov.haiti.utils.Exceptions.utilityClass; /** @@ -13,9 +12,9 @@ import static dev.struchkov.haiti.utils.Exceptions.utilityClass; */ public final class Strings { - private static final Set MD_FORBIDDEN_SYMBOLS = Stream.of( + private static final Set MD_FORBIDDEN_SYMBOLS = Set.of( '\\', '+', '`', '[', ']', '\"', '~', '*', '#', '=', '_', '>', '<' - ).collect(Collectors.toSet()); + ); private Strings() { utilityClass(); @@ -23,7 +22,6 @@ public final class Strings { public static final String EMPTY = ""; public static final String NEW_LINE = System.getProperty("line.separator"); - public static final String TWO_NEW_LINE = NEW_LINE + NEW_LINE; public static final String ERR_UTILITY_CLASS = "Нельзя создать объект утилитарного класса"; public static final String ERR_OPERATION_NOT_SUPPORTED = "Операция не поддерживается"; @@ -37,7 +35,7 @@ public final class Strings { * @return Обрезанная до length количества символов строка */ public static String cutoff(String string, int length) { - if (string != null) { + if (checkNotNull(string)) { return string.length() > length ? string.substring(0, length) + "..." : string; } return null; @@ -50,7 +48,7 @@ public final class Strings { * @return Строка с экранированными символами */ public static String escapeMarkdown(String str) { - if (str != null) { + if (checkNotNull(str)) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); diff --git a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/domain/CompositeUrl.java b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/container/CompositeUrl.java similarity index 95% rename from haiti-utils/src/main/java/dev/struchkov/haiti/utils/domain/CompositeUrl.java rename to haiti-utils/src/main/java/dev/struchkov/haiti/utils/container/CompositeUrl.java index 7b4040b..57fbd2c 100644 --- a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/domain/CompositeUrl.java +++ b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/container/CompositeUrl.java @@ -1,4 +1,4 @@ -package dev.struchkov.haiti.utils.domain; +package dev.struchkov.haiti.utils.container; import java.util.Optional; diff --git a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/container/ContextKey.java b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/container/ContextKey.java new file mode 100644 index 0000000..b0548f4 --- /dev/null +++ b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/container/ContextKey.java @@ -0,0 +1,38 @@ +package dev.struchkov.haiti.utils.container; + +import java.util.Objects; + +public interface ContextKey { + + String getValue(); + + Class getType(); + + static ContextKey of(String value, Class type) { + return new ContextKey<>() { + @Override + public String getValue() { + return value; + } + + @Override + public Class getType() { + return type; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ContextKey contextKey = (ContextKey) o; + return Objects.equals(value, contextKey.getValue()); + } + + @Override + public int hashCode() { + return Objects.hash(value); + } + }; + } + +} diff --git a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Pair.java b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/container/Pair.java similarity index 63% rename from haiti-utils/src/main/java/dev/struchkov/haiti/utils/Pair.java rename to haiti-utils/src/main/java/dev/struchkov/haiti/utils/container/Pair.java index 6ef4274..b330ac2 100644 --- a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Pair.java +++ b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/container/Pair.java @@ -1,4 +1,6 @@ -package dev.struchkov.haiti.utils; +package dev.struchkov.haiti.utils.container; + +import java.util.Objects; /** * Адаптированная реализация Pair из пакета javafx.util. Реализация необходима, так как в некоторых сборках JDK этот @@ -32,4 +34,17 @@ public class Pair { this.value = value; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Pair pair = (Pair) o; + return Objects.equals(key, pair.key); + } + + @Override + public int hashCode() { + return Objects.hash(key); + } + } diff --git a/haiti-utils/src/main/java/module-info.java b/haiti-utils/src/main/java/module-info.java index ffe1635..1e2a58c 100644 --- a/haiti-utils/src/main/java/module-info.java +++ b/haiti-utils/src/main/java/module-info.java @@ -1,7 +1,7 @@ module haiti.utils { exports dev.struchkov.haiti.utils; exports dev.struchkov.haiti.utils.concurrent; - exports dev.struchkov.haiti.utils.domain; + exports dev.struchkov.haiti.utils.container; requires haiti.exception;