実装されたソースコードがないので例外ハンドリングについてはコメントできませんが…おそらく実施されたいことは以下のようなことなのではないかと。
java
1public class TwoFileMerge {
2 456
7 protected Map<String,Object> separateDataA(String data) {
8 String orgCode = data.substring(0,4);
9 String memberCode = data.substring(4,13);
10 String price = data.substring(13);
11
12 Map<String, Object> map = new HashMap<>();
13 map.put("orgCode", orgCode);
14 map.put("memberCode", memberCode);
15 map.put("price", price);
16
17 return map;
18 }
19
20 222324
25 protected Map<String,Object> separateDataB(String data) {
26 String orgCode = data.substring(0,4);
27 String memberCode = data.substring(4,13);
28 String name = data.substring(13);
29
30 Map<String, Object> map = new HashMap<>();
31 map.put("orgCode", orgCode);
32 map.put("memberCode", memberCode);
33 map.put("name", name);
34
35 return map;
36 }
37
38 40414243
44 public Map<String, Object> mergeData(String dataA, String dataB) {
45 Map<String, Object> mapA = separateDataA(dataA);
46 Map<String, Object> mapB = separateDataB(dataB);
47
48 mapA.putAll(mapB);
49
50 return mapA;
51 }
52}
検証コードは以下:
java
1import static org.junit.Assert.*;
2
3import java.util.Map;
4
5import org.junit.Before;
6import org.junit.Test;
7
8public class TwoFileMergeTest {
9
10 TwoFileMerge merge = null;
11
12 @Before
13 public void setUp() throws Exception {
14 merge = new TwoFileMerge();
15 }
16
17 @Test
18 public void test() {
19 String dataA = "A00122222222200001000";
20 String dataB = "A001222222222○○ ○○";
21
22 Map<String, Object> result = merge.mergeData(dataA, dataB);
23
24 // Mapの中身がマージされた結果かを確認
25 assertEquals(result.containsKey("orgCode"), true);
26 assertEquals(result.containsKey("memberCode"), true);
27 assertEquals(result.containsKey("name"), true);
28 assertEquals(result.containsKey("price"), true);
29
30 // 値のチェック
31 assertEquals("A001" ,result.get("orgCode"));
32 assertEquals("222222222" , result.get("memberCode"));
33 assertEquals("○○ ○○", result.get("name"));
34 assertEquals("00001000", result.get("price"));
35 }
36
37}
38