private static String mergeStudent( final String lineEmployee, final String lineStudent, final Category destinationCategory) { final StringBuilder newLine = new StringBuilder(); newLine.append(lineStudent.substring(0, 11)); newLine.append(destinationCategory.getCode()); // newLine.append(lineStudent.substring(13, 34)); newLine.append(lineEmployee.substring(13, 34)); newLine.append(lineStudent.substring(11, 21)); newLine.append(lineStudent.substring(83, 95)); newLine.append(" "); newLine.append(lineStudent.substring(67, 75)); newLine.append(lineEmployee.substring(67, 75)); newLine.append(lineStudent.substring(83, 95)); newLine.append(" "); newLine.append(lineEmployee.substring(44, 67)); newLine.append(lineEmployee.substring(131)); return newLine.toString(); }
public static String merge( final String line1, final Category category1, final String line2, final Category category2) { if (category1 == Category.CODE_71 && category2 == Category.CODE_94) { return mergeStudent(line1, line2, Category.CODE_73); } else if (category2 == Category.CODE_71 && category1 == Category.CODE_94) { return mergeStudent(line2, line1, Category.CODE_73); } if (category1 == Category.CODE_71 && category2 == Category.CODE_95) { return mergeStudent(line1, line2, Category.CODE_73); } else if (category2 == Category.CODE_71 && category1 == Category.CODE_95) { return mergeStudent(line2, line1, Category.CODE_73); } if (category1 == Category.CODE_71 && category2 == Category.CODE_92) { return mergeStudent(line1, line2, Category.CODE_73); } else if (category2 == Category.CODE_71 && category1 == Category.CODE_92) { return mergeStudent(line2, line1, Category.CODE_73); } if (category1 == Category.CODE_71 && category2 == Category.CODE_99) { return mergeStudent(line1, line2, Category.CODE_73); } else if (category2 == Category.CODE_71 && category1 == Category.CODE_99) { return mergeStudent(line2, line1, Category.CODE_73); } if (category1 == Category.CODE_72 && category2 == Category.CODE_92) { return mergeStudent(line1, line2, Category.CODE_73); } else if (category2 == Category.CODE_72 && category1 == Category.CODE_92) { return mergeStudent(line2, line1, Category.CODE_73); } if (category1 == Category.CODE_72 && category2 == Category.CODE_94) { return mergeStudent(line1, line2, Category.CODE_73); } else if (category2 == Category.CODE_72 && category1 == Category.CODE_94) { return mergeStudent(line2, line1, Category.CODE_73); } if (category1 == Category.CODE_72 && category2 == Category.CODE_95) { return mergeStudent(line1, line2, Category.CODE_73); } else if (category2 == Category.CODE_72 && category1 == Category.CODE_95) { return mergeStudent(line2, line1, Category.CODE_73); } if (category1 == Category.CODE_81 && category2 == Category.CODE_94) { return mergeStudent(line1, line2, Category.CODE_82); } else if (category2 == Category.CODE_81 && category1 == Category.CODE_94) { return mergeStudent(line2, line1, Category.CODE_82); } if (category1 == Category.CODE_81 && category2 == Category.CODE_95) { return mergeStudent(line1, line2, Category.CODE_82); } else if (category2 == Category.CODE_81 && category1 == Category.CODE_95) { return mergeStudent(line2, line1, Category.CODE_82); } if (category1 == Category.CODE_81 && category2 == Category.CODE_96) { return line1; } else if (category2 == Category.CODE_81 && category1 == Category.CODE_96) { return line2; } if (category1 == Category.CODE_81 && category2 == Category.CODE_99) { return mergeStudent(line1, line2, Category.CODE_82); } else if (category2 == Category.CODE_81 && category1 == Category.CODE_99) { return mergeStudent(line2, line1, Category.CODE_82); } if (category1 == Category.CODE_82 && category2 == Category.CODE_92) { return mergeInMergedFormat(line1, line2, Category.CODE_82); } else if (category2 == Category.CODE_82 && category1 == Category.CODE_92) { return mergeInMergedFormat(line2, line1, Category.CODE_82); } if (category1 == Category.CODE_82 && category2 == Category.CODE_94) { return mergeInMergedFormat(line1, line2, Category.CODE_82); } else if (category2 == Category.CODE_82 && category1 == Category.CODE_94) { return mergeInMergedFormat(line2, line1, Category.CODE_82); } if (category1 == Category.CODE_82 && category2 == Category.CODE_95) { return mergeInMergedFormat(line1, line2, Category.CODE_82); } else if (category2 == Category.CODE_82 && category1 == Category.CODE_95) { return mergeInMergedFormat(line2, line1, Category.CODE_82); } if (category1 == Category.CODE_92 && category2 == Category.CODE_92) { throw new Error("??? 92 + 92"); } else if (category2 == Category.CODE_92 && category1 == Category.CODE_92) { throw new Error("??? 92 + 92"); } if (category1 == Category.CODE_92 && category2 == Category.CODE_96) { return mergeInMergedFormat(line2, line1, Category.CODE_96); } else if (category2 == Category.CODE_92 && category1 == Category.CODE_96) { return mergeInMergedFormat(line1, line2, Category.CODE_96); } if (category1 == Category.CODE_94 && category2 == Category.CODE_94) { throw new Error("??? 94 + 94"); } else if (category2 == Category.CODE_94 && category1 == Category.CODE_94) { throw new Error("??? 94 + 94"); } if (category1 == Category.CODE_94 && category2 == Category.CODE_95) { return line2; } else if (category2 == Category.CODE_94 && category1 == Category.CODE_95) { return line1; } if (category1 == Category.CODE_94 && category2 == Category.CODE_96) { return mergeInMergedFormat(line2, line1, Category.CODE_96); } else if (category2 == Category.CODE_94 && category1 == Category.CODE_96) { return mergeInMergedFormat(line1, line2, Category.CODE_96); } if (category1 == Category.CODE_95 && category2 == Category.CODE_95) { throw new Error("??? 95 + 95"); } else if (category2 == Category.CODE_95 && category1 == Category.CODE_95) { throw new Error("??? 95 + 95"); } if (category1 == Category.CODE_95 && category2 == Category.CODE_96) { return mergeInMergedFormat(line2, line1, Category.CODE_96); } else if (category2 == Category.CODE_95 && category1 == Category.CODE_96) { return mergeInMergedFormat(line1, line2, Category.CODE_96); } if (category1 == Category.CODE_95 && category2 == Category.CODE_97) { return mergeInMergedFormat(line1, line2, Category.CODE_96); } else if (category2 == Category.CODE_95 && category1 == Category.CODE_97) { return mergeInMergedFormat(line2, line1, Category.CODE_96); } if (category1 == Category.CODE_83 && category2 == Category.CODE_95) { return mergeStudent(line1, line2, Category.CODE_82); } else if (category2 == Category.CODE_83 && category1 == Category.CODE_95) { return mergeStudent(line2, line1, Category.CODE_82); } else { throw new Error("Unhandled case: " + category1.getCode() + " & " + category2.getCode()); } }