1. import java.io.*;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.Scanner;
  7. public class DataMirroring {
  8. public static void main(String[] args) {
  9. // Load configuration
  10. Config config = new Config();
  11. // Read datasets
  12. List<String> sourceFiles = config.getSourceFiles();
  13. List<String> destinationFiles = config.getDestinationFiles();
  14. // Mirror data
  15. mirrorData(sourceFiles, destinationFiles, config.getMirroringStrategy());
  16. }
  17. public static void mirrorData(List<String> sourceFiles, List<String> destinationFiles, String mirroringStrategy) {
  18. for (int i = 0; i < sourceFiles.size(); i++) {
  19. String sourceFile = sourceFiles.get(i);
  20. String destinationFile = destinationFiles.get(i);
  21. try {
  22. // Read from source file
  23. List<String> sourceData = readData(sourceFile);
  24. // Mirror data based on strategy
  25. List<String> mirroredData = mirror(sourceData, mirroringStrategy);
  26. // Write to destination file
  27. writeData(mirroredData, destinationFile);
  28. System.out.println("Mirrored data from " + sourceFile + " to " + destinationFile);
  29. } catch (IOException e) {
  30. System.err.println("Error processing " + sourceFile + ": " + e.getMessage());
  31. }
  32. }
  33. }
  34. private static List<String> readData(String filePath) throws IOException {
  35. List<String> data = new ArrayList<>();
  36. try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
  37. String line;
  38. while ((line = reader.readLine()) != null) {
  39. data.add(line);
  40. }
  41. }
  42. return data;
  43. }
  44. private static List<String> mirror(List<String> data, String mirroringStrategy) {
  45. List<String> mirroredData = new ArrayList<>();
  46. switch (mirroringStrategy.toLowerCase()) {
  47. case "reverse":
  48. // Reverse the order of the data
  49. for (int i = data.size() - 1; i >= 0; i--) {
  50. mirroredData.add(data.get(i));
  51. }
  52. break;
  53. case "uppercase":
  54. // Convert to uppercase
  55. for (String item : data) {
  56. mirroredData.add(item.toUpperCase());
  57. }
  58. break;
  59. default:
  60. // Default: copy data
  61. mirroredData.addAll(data);
  62. }
  63. return mirroredData;
  64. }
  65. private static void writeData(List<String> data, String filePath) throws IOException {
  66. try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
  67. for (String item : data) {
  68. writer.write(item);
  69. writer.newLine();
  70. }
  71. }
  72. }
  73. // Configuration class to store file paths and mirroring strategy
  74. static class Config {
  75. private List<String> sourceFiles;
  76. private List<String> destinationFiles;
  77. private String mirroringStrategy;
  78. public Config() {
  79. // Load configuration from file
  80. try (Scanner scanner = new Scanner(new File("config.txt"))) {
  81. this.sourceFiles = new ArrayList<>();
  82. this.destinationFiles = new ArrayList<>();
  83. this.mirroringStrategy = ""; // Default value
  84. while (scanner.hasNextLine()) {
  85. String line = scanner.nextLine();
  86. if (line.startsWith("source=")) {
  87. this.sourceFiles = parseFilePaths(line.substring("source=".length()).trim());
  88. } else if (line.startsWith("destination=")) {
  89. this.destinationFiles = parseFilePaths(line.substring("destination=".length()).trim());
  90. } else if (line.startsWith("strategy=")) {
  91. this.mirroringStrategy = line.substring("strategy=".length()).trim();
  92. }
  93. }
  94. } catch (FileNotFoundException e) {
  95. System.err.println("Config file not found. Using default values.");
  96. }
  97. }
  98. private List<String> parseFilePaths(String filePaths) {
  99. return List.of(filePaths.split(",")); // Split by comma
  100. }
  101. public List<String> getSourceFiles() {
  102. return sourceFiles;
  103. }

Add your comment