Advertisement
elvirynwa

TextComparator2

Apr 28th, 2020
770
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.74 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.FileReader;
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.util.LinkedHashMap;
  6. import java.util.Map;
  7. import java.util.Scanner;
  8. import java.util.concurrent.atomic.AtomicReference;
  9.  
  10. public class Registers {
  11.     public static void main(String[] args) throws IOException {
  12.         Scanner scanner = new Scanner(System.in);
  13.  
  14.         BufferedReader reader1 = new BufferedReader(new FileReader("C:\\Users\\SINKOPA\\Desktop\\5.txt"));
  15.         BufferedReader reader2 = new BufferedReader(new FileReader("C:\\Users\\SINKOPA\\Desktop\\6.txt"));
  16.  
  17.         PrintWriter writer = new PrintWriter("C:\\Users\\SINKOPA\\Desktop\\7.txt", "UTF-8");
  18. //        writer.println("The first line");
  19. //        writer.println("The second line");
  20. //        writer.close();
  21.  
  22.         Map<String, Map<String, String>> file1 = new LinkedHashMap<>();
  23.         Map<String, Map<String, String>> file2 = new LinkedHashMap<>();
  24.         Map<String, Map<String, String>> file2Coppy = new LinkedHashMap<>();
  25.  
  26.         String line1 = reader1.readLine();
  27.         String line2 = reader2.readLine();
  28.  
  29.         String originalKey = "";
  30.  
  31.         while (line1 != null) {
  32.             String mainKey = "";
  33.             String attribute = "";
  34.             String value = "";
  35.             if (line1.startsWith("[")) {
  36.                 mainKey = line1;
  37.                 originalKey = mainKey;
  38.                 file1.put(originalKey, new LinkedHashMap<>());
  39.             }
  40.             if (line1.contains("=")) {
  41.                 attribute = line1.substring(0, line1.indexOf('='));
  42.                 value = line1.substring(line1.indexOf('=') + 1);
  43.                 file1.get(originalKey).put(attribute, value);
  44.  
  45.             }
  46.  
  47.             line1 = reader1.readLine();
  48.         }
  49.  
  50.         String originalKey2 = "";
  51.         while (line2 != null) {
  52.             String mainKey = "";
  53.             String attribute = "";
  54.             String value = "";
  55.             if (line2.startsWith("[")) {
  56.                 mainKey = line2;
  57.                 originalKey2 = mainKey;
  58.                 file2.put(originalKey2, new LinkedHashMap<>());
  59.                 file2Coppy.put(originalKey2, new LinkedHashMap<>());
  60.             }
  61.             if (line2.contains("=")) {
  62.                 attribute = line2.substring(0, line2.indexOf('='));
  63.                 value = line2.substring(line2.indexOf('=') + 1);
  64.                 file2.get(originalKey2).put(attribute, value);
  65.                 file2Coppy.get(originalKey2).put(attribute, value);
  66.  
  67.             }
  68.  
  69.             line2 = reader2.readLine();
  70.         }
  71.  
  72.         int missingKeysInFile2 = 0;
  73.         while (file2.size() > 0) {
  74.             String keyFileOne = "";
  75.             String attributeFileOne = "";
  76.             String valueFileOne = "";
  77.  
  78.             String keyFileTwo = "";
  79.             String attributeFileTwo = "";
  80.             String valueFileTwo = "";
  81.  
  82.  
  83.             for (Map.Entry<String, Map<String, String>> kvp : file1.entrySet()) {
  84.                 keyFileOne = kvp.getKey();
  85.                 for (Map.Entry<String, Map<String, String>> kvp1 : file2.entrySet()) {
  86.                     keyFileTwo = kvp1.getKey();
  87. //                    if (!file2.containsKey(keyFileOne)){
  88. //                        missingKeysInFile2++;
  89. //                    }
  90. //                    System.out.println();
  91.                     if (!keyFileOne.equals(keyFileTwo)) {
  92.                         missingKeysInFile2++;
  93.                         writer.println(keyFileOne);
  94.                         for (Map.Entry<String, String> entry : kvp.getValue().entrySet()) {
  95.                             String a = entry.getKey();
  96.                             String v = entry.getValue();
  97.                             writer.println(a + "=" + v);
  98.                         }
  99.                         writer.println();
  100.                         file2.remove(keyFileTwo);
  101.                     } else {
  102.                         for (Map.Entry<String, String> entry : kvp.getValue().entrySet()) {
  103.                             String a = entry.getKey();
  104.                             String v = entry.getValue();
  105.                             attributeFileOne = a;
  106.                             valueFileOne = v;
  107.  
  108.                             for (Map.Entry<String, String> entry1 : kvp1.getValue().entrySet()) {
  109.                                 String a1 = entry1.getKey();
  110.                                 String v1 = entry1.getValue();
  111.                                 attributeFileTwo = a1;
  112.                                 valueFileTwo = v1;
  113.                                 if (!attributeFileOne.equals(attributeFileTwo)) {
  114.                                     writer.println(keyFileOne);
  115.                                     writer.println(a + "=" + v + " ||| " + null);
  116.                                     writer.println();
  117.                                 } else {
  118.                                     if (!valueFileOne.equals(valueFileTwo)) {
  119.                                         writer.println(keyFileOne);
  120.                                         writer.println(a + "=" + v + " ||| " + a + v1);
  121.                                         writer.println();
  122.                                         kvp1.getValue().remove(a1, v1);
  123.                                         break;
  124.                                     }
  125.                                 }
  126.                                 break;
  127.                             }
  128.                             kvp1.getValue().remove(attributeFileTwo, valueFileTwo);
  129.                         }
  130.                         file2.remove(keyFileTwo);
  131.                         break;
  132.                     }
  133.                     break;
  134.                 }
  135.             }
  136.         }
  137.         System.out.println(missingKeysInFile2);
  138.         //todo for file 2
  139.  
  140.         int missingKeysInFile1 = 0;
  141.         while (file1.size() > 0) {
  142.             String keyFileOne = "";
  143.             String attributeFileOne = "";
  144.             String valueFileOne = "";
  145.  
  146.             String keyFileTwo = "";
  147.             String attributeFileTwo = "";
  148.             String valueFileTwo = "";
  149.  
  150.  
  151.             for (Map.Entry<String, Map<String, String>> kvp : file2Coppy.entrySet()) {
  152.                 keyFileTwo = kvp.getKey();
  153.                 for (Map.Entry<String, Map<String, String>> kvp1 : file1.entrySet()) {
  154.                     keyFileOne = kvp1.getKey();
  155.  
  156.                     if (!keyFileTwo.equals(keyFileOne)) {
  157.                         missingKeysInFile1++;
  158.                         writer.println(keyFileTwo);
  159.                         for (Map.Entry<String, String> entry : kvp.getValue().entrySet()) {
  160.                             String a = entry.getKey();
  161.                             String v = entry.getValue();
  162.                             writer.println(a + "=" + v);
  163.                         }
  164.                         writer.println();
  165.                         file1.remove(keyFileOne);
  166.                     } else {
  167.                         for (Map.Entry<String, String> entry : kvp.getValue().entrySet()) {
  168.                             String a = entry.getKey();
  169.                             String v = entry.getValue();
  170.                             attributeFileTwo = a;
  171.                             valueFileTwo = v;
  172.  
  173.                             for (Map.Entry<String, String> entry1 : kvp1.getValue().entrySet()) {
  174.                                 String a1 = entry1.getKey();
  175.                                 String v1 = entry1.getValue();
  176.                                 attributeFileOne = a1;
  177.                                 valueFileOne = v1;
  178.                                 if (!attributeFileTwo.equals(attributeFileOne)) {
  179.                                     writer.println(keyFileTwo);
  180.                                     writer.println(a + "=" + v + " ||| " + null);
  181.                                     writer.println();
  182.                                 } else {
  183.                                     if (!valueFileTwo.equals(valueFileOne)) {
  184.                                         writer.println(keyFileTwo);
  185.                                         writer.println(a + "=" + v + " ||| " + a + v1);
  186.                                         writer.println();
  187.                                         kvp1.getValue().remove(a1, v1);
  188.                                         break;
  189.                                     }
  190.                                 }
  191.                                 break;
  192.                             }
  193.                             kvp1.getValue().remove(attributeFileOne, valueFileOne);
  194.                         }
  195.                         file1.remove(keyFileOne);
  196.                         break;
  197.                     }
  198.                     break;
  199.                 }
  200.             }
  201.         }
  202.         System.out.println(missingKeysInFile1);
  203.         writer.close();
  204.     }
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement