package Common.Utils; import Common.CommonConstants; import Common_old.Utils.Utils; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.apache.commons.io.FileUtils; import javax.swing.*; import java.awt.*; import java.io.File; import java.net.URL; import java.nio.charset.Charset; import java.util.Arrays; import java.util.Vector; import java.util.stream.Collectors; public class CommonUtils { //JSON //-- // public static String jsonToPrettyFormat(String packed) { // JsonParser parser = new JsonParser(); // JsonObject json = parser.parse(packed).getAsJsonObject(); // Gson gson = new GsonBuilder().setPrettyPrinting().create(); // return gson.toJson(json); // } //-- public static Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().setPrettyPrinting().create(); public static T jsonFromFile(File file, Class json_class) throws Exception { return gson.fromJson(FileUtils.readFileToString(file, Charset.defaultCharset()), json_class); } public static void jsonToFile(Object json_object, File file) throws Exception { FileUtils.writeStringToFile(file, gson.toJson(json_object)); } //Синтаксис и регулярные выражения public static String hideRegularMetasymbols(String word) { String res = word.replace("\\", "\\\\"); for (char c : CommonConstants.regular_metasymbols) res = res.replace(String.valueOf(c), "\\" + c); return res; } public static String DQuotes(Object o) { return "\"" + o.toString() + "\""; } public static String Quotes(Object o) { return "'" + o.toString() + "'"; } public static String Brackets(Object o) { return "[" + o.toString() + "]"; } public static String RBrackets(Object o) { return "(" + o.toString() + ")"; } public static String TBrackets(Object o) { return "<" + o.toString() + ">"; }//FortranSPFTokenMaker public static boolean ContainsCyrillic(String string) { return string.chars() .mapToObj(Character.UnicodeBlock::of) .anyMatch(b -> b.equals(Character.UnicodeBlock.CYRILLIC)); } public static boolean isDigit(String s) { try { Integer.parseInt(s); return true; } catch (NumberFormatException e) { return false; } } public static boolean isEnglishLetter(char c) { return (((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z'))); } public static boolean isRussianLetter(char c) { return ((c >= 'а') && (c <= 'я')) || ((c >= 'А') && (c <= 'Я')) || (c == 'Ё') || (c == 'ё'); } public static boolean isSign(char c) { switch (c) { //арифметика. case '+': case '-': case '*': case '/': case '<': case '>': case '&': case '=': case '%': case '^': //- обр слеш case '\\': //препинание case ' ': case '_': case '.': case ',': case '!': case '?': case ';': case ':': //escape последовательности case '\t': case '\n': case '\r': //кавычки case '\'': case '"': //- скобки case '(': case ')': case '[': case ']': case '{': case '}': //прочее case '~': case '`': case '|': case '@': case '$': case '#': case '№': return true; } return false; } public static char Translit(char c) { switch (c) { case 'А': case 'а': case 'Я': case 'я': return 'A'; // case 'Б': case 'б': return 'B'; //- case 'В': case 'в': return 'V'; // case 'Г': case 'г': return 'G'; // case 'Д': case 'д': return 'D'; // case 'Е': case 'е': case 'Ё': case 'ё': case 'Э': case 'э': return 'E'; // case 'Ж': case 'ж': return 'J'; // case 'З': case 'з': return 'Z'; // case 'И': case 'и': case 'Й': case 'й': return 'I'; // case 'К': case 'к': return 'K'; // case 'Л': case 'л': return 'L'; // case 'М': case 'м': return 'M'; // case 'Н': case 'н': return 'N'; // case 'О': case 'о': return 'O'; // case 'П': case 'п': return 'P'; // case 'Р': case 'р': return 'R'; // case 'С': case 'с': return 'S'; case 'Т': case 'т': return 'T'; // case 'У': case 'у': case 'Ю': case 'ю': return 'U'; case 'Х': case 'х': case 'Щ': case 'щ': case 'Ш': case 'ш': return 'H'; // case 'Ф': case 'ф': return 'F'; // case 'Ч': case 'ч': case 'Ц': case 'ц': return 'C'; // case 'Ы': case 'ы': return 'Y'; // } return ' '; } public static String ending(boolean flag) { return flag ? ")" : ","; } public static boolean isRBracketsBalanced(String fragment) { int cc = 0; for (char c : fragment.toCharArray()) { if (c == '(') cc++; if (c == ')') cc--; if (cc < 0) return false; } return (cc == 0); } public static String removeRedundantSpaces(String s_in) { return String.join(" ", Arrays.stream(s_in.split(" ")).filter(d -> !d.isEmpty()).collect(Collectors.toCollection(Vector::new))); } public static String removeCharacters(String string, String... to_remove) { String res = string; for (String c : to_remove) res = res.replace(c, ""); return res; } //ФАЙЛЫ public static String getExtension(File file) { String fn = file.getName(); int di = fn.lastIndexOf("."); return (di >= 0) ? fn.substring(di + 1).toLowerCase() : ""; } public static String getExtensionFromName(String fn) { int di = fn.lastIndexOf("."); return (di >= 0) ? fn.substring(di + 1).toLowerCase() : ""; } public static String getFileNameWithoutExtension(File file) { return getNameWithoutExtension(file.getName()); } public static String getNameWithoutExtension(String fn) { return (fn.contains(".")) ? fn.substring(0, fn.lastIndexOf(".")).toLowerCase() : fn.toLowerCase(); } public static String toU(String path) { return path.replace('\\', '/'); } public static String toW(String path) { return path.replace('/', '\\'); } public static double getFileSizeMegaBytes(File file) { return ((double)file.length()) / (1024 * 1024); } //Иконки public static ImageIcon getIcon(String path) { URL imageUrl = CommonUtils.class.getResource(path); if (imageUrl == null) { return null; } return new ImageIcon(imageUrl); } public static ImageIcon getTabIcon(String path) { URL imageUrl = CommonUtils.class.getResource(path); if (imageUrl == null) { return null; } ImageIcon icon = new ImageIcon(imageUrl); return new ImageIcon(icon.getImage().getScaledInstance( 18, 18, Image.SCALE_DEFAULT)); } //- //ГЕНЕРАЦИЯ ИМЕН Старт задачи }