FreelanceBot

Форк
0
/
OrderQueryRelation.java 
71 строка · 2.7 Кб
1
package telegramBot.task;
2

3
import telegramBot.dto.OrderDto;
4
import telegramBot.enums.Language;
5

6
import java.util.HashMap;
7
import java.util.Map;
8
import java.util.regex.Pattern;
9

10
public class OrderQueryRelation {
11
    private static final Map<String, String[]> keywords = new HashMap<>();
12

13
    static {
14
         keywords.put(Language.JAVASCRIPT.getName(), new String[]{"JavaScript", "Java Script",
15
                 "Java Скрипт", "Java Скрипте" , "JS"});
16
         keywords.put(Language.PYTHON.getName(), new String[]{"Python"});
17
         keywords.put(Language.JAVA.getName(), new String[]{"Java"});
18
         keywords.put(Language.PHP.getName(), new String[]{"PHP"});
19
         keywords.put(Language.RUBY.getName(), new String[]{"Ruby"});
20
         keywords.put(Language.C.getName(), new String[]{"C"});
21
    }
22

23

24
    private static String[] getKeywords(Language language){
25
        return keywords.get(language.getName());
26
    }
27

28
    public static Language correctRelation(OrderDto dto, Language language) {
29
        String title = dto.getTitle(), details = dto.getDetails();
30
        boolean inTitle = findKeyword(title, language);
31
        boolean inDetails = findKeyword(details, language);
32

33
        if (inTitle) return language;
34
        else if (inDetails) {
35
            for(Language lang : Language.getLanguages()){
36
                if(lang != language && findKeyword(title, lang)) return lang;
37
            }
38
            return language;
39
        }
40
        return Language.UNKNOWN;
41
    }
42

43
    private static boolean findKeyword(String field, Language language) {
44
        for (String keyword : getKeywords(language)) {
45
            if (!containsSkipOrderPattern(field, keyword) &&
46
                    containsKeywordPattern(field, keyword)) return true;
47
        }
48
        return false;
49
    }
50

51
    private static boolean containsSkipOrderPattern(String field, String keyword){
52
        Pattern skipPattern = Pattern.compile("(((не нужны)|(не нужно)|(без)|(кроме))(\\s|(\\s\\W+\\s))(?i)(" + keyword + "))|" +
53
                "((?i)(" + keyword + ")((\\s|(\\s?\\p{P}\\s?))|(\\s\\W+\\s))((не нужны)|(не нужно)))");
54

55
       return skipPattern.matcher(field).find();
56
    }
57

58
    private static boolean containsKeywordPattern(String field, String keyword){
59
        Pattern keywordPattern = Pattern.compile("(\\s|(\\p{P}\\s)?)(?i)(" + keyword + ")((\\p{P}|\\s)?)");
60
        return keywordPattern.matcher(field).find();
61

62
    }
63

64
    public static boolean falseJavaPattern(OrderDto order){
65
        String title = order.getTitle(), details = order.getDetails();
66
        Pattern jsPattern = Pattern.compile("(\\s|(\\p{P}\\s)?)(?i)(java script)((\\p{P}|\\s)?)");
67
        return jsPattern.matcher(title).find() || jsPattern.matcher(details).find();
68
    }
69

70

71
}
72

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.