# Business Logic — DKW00301SFBean.loadModelData() [760 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.DKW00301SF.DKW00301SFBean` |
| Layer | Controller / Web View Bean (Package: `eo.web.webview.DKW00301SF`) |
| Module | `DKW00301SF` (Package: `eo.web.webview.DKW00301SF`) |

## 1. Role

### DKW00301SFBean.loadModelData()

This method serves as the central **data access router** for the DKW00301SF (Equipment Return / 返品処理) screen. It implements a **string-based key dispatch** pattern that allows the UI layer to retrieve typed model data from this screen bean using a human-readable key path rather than direct getter calls. The `key` parameter follows a structured path format — for scalar items the path is `"item name/subkey"` (e.g., `"サービス契約番号/value"`), while for list-based data-type beans the path is `"item name/index/propertyName"` (e.g., `"返品抽出条件/0/hmpin_chsht_joken"`).

The method handles **three categories of data**: (1) **Scalar items** — String, Long types such as Service Contract Number, Case Number, Serial Number, Page Number, Screen Mode, and Style, accessed via `value`/`enable`/`state` subkeys; (2) **Data-type bean lists** — repeating groups of complex bean objects including Return Item Search Conditions, Accepting Party, Return Type, Model Numbers, Search Date Choice, Date FROM/TO, Approval Date FROM/TO, Search Results List, Provision Type List, CSV Search Results List, and Selected Search Results List, accessed via index and nested property paths; (3) **String repeatable lists** — Equipment Contract Division Code List and Equipment Contract Division Name List, accessed via index and subkey.

It also serves as a **delegation point** for common-info view data: when the key starts with `"//"`, the method delegates entirely to the parent class's `loadCommonInfoData()` method. This method plays a critical role as a **shared utility** called by 14+ other methods within the same bean class (including `getJsflist_typelist_*` variants) to retrieve screen model data for display, export, and selection purposes.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["loadModelData key, subkey"])
    CHECK_NULL_KEY{key == null?}
    SET_EMPTY_SUBKEY["subkey equals empty string"]
    CHECK_COMMON_INFO{key starts with double-slash?}
    DELEGATE_COMMON["super.loadCommonInfoData key"]
    FIND_SLASH["separaterPoint = key.indexOf slash"]
    EXTRACT_KEY_ELEMENT["keyElement = first path segment"]
    DISPATCH{keyElement match?}

    BRANCH_1["Branch 1: Return item search conditions bean list"]
    BRANCH_2["Branch 2: Accepting party bean list"]
    BRANCH_3["Branch 3: Return type bean list"]
    BRANCH_4["Branch 4: Service contract number string item"]
    BRANCH_5["Branch 5: Case number string item"]
    BRANCH_6["Branch 6: Model number bean list"]
    BRANCH_7["Branch 7: Serial number string item"]
    BRANCH_8["Branch 8: Search date choice bean list"]
    BRANCH_9["Branch 9: Date FROM bean list"]
    BRANCH_10["Branch 10: Date TO bean list"]
    BRANCH_11["Branch 11: Approval date FROM bean list"]
    BRANCH_12["Branch 12: Approval date TO bean list"]
    BRANCH_13["Branch 13: Search results list bean list"]
    BRANCH_14["Branch 14: Provision type list bean list"]
    BRANCH_15["Branch 15: CSV search results list bean list"]
    BRANCH_16["Branch 16: Search condition return item index string item"]
    BRANCH_17["Branch 17: Search condition accepting party index string item"]
    BRANCH_18["Branch 18: Search condition return type index string item"]
    BRANCH_19["Branch 19: Search condition service contract number string item"]
    BRANCH_20["Branch 20: Search condition case number string item"]
    BRANCH_21["Branch 21: Search condition model number index string item"]
    BRANCH_22["Branch 22: Search condition serial number string item"]
    BRANCH_23["Branch 23: Search condition search date choice index string item"]
    BRANCH_24["Branch 24: Equipment contract division code list string repeatable"]
    BRANCH_25["Branch 25: Equipment contract division name list string repeatable"]
    BRANCH_26["Branch 26: Page number long item"]
    BRANCH_27["Branch 27: Screen mode long item"]
    BRANCH_28["Branch 28: Style string item"]
    BRANCH_29["Branch 29: Search condition date FROM string item"]
    BRANCH_30["Branch 30: Search condition date TO string item"]
    BRANCH_31["Branch 31: Search condition approval date FROM string item"]
    BRANCH_32["Branch 32: Search condition approval date TO string item"]
    BRANCH_33["Branch 33: Search condition return equipment number string item"]
    BRANCH_34["Branch 34: Selected search results list bean list"]
    DEFAULT_RETURN["return null"]
    RETURN_NULL["return null"]
    END_NODE(["Return to caller"])

    START --> CHECK_NULL_KEY
    CHECK_NULL_KEY -->|Yes| RETURN_NULL
    CHECK_NULL_KEY -->|No| CHECK_EMPTY_SUBKEY{subkey == null?}
    CHECK_EMPTY_SUBKEY -->|Yes| SET_EMPTY_SUBKEY
    SET_EMPTY_SUBKEY --> CHECK_COMMON_INFO
    CHECK_EMPTY_SUBKEY -->|No| CHECK_COMMON_INFO
    CHECK_COMMON_INFO -->|Yes| DELEGATE_COMMON
    DELEGATE_COMMON --> END_NODE
    CHECK_COMMON_INFO -->|No| FIND_SLASH
    FIND_SLASH --> EXTRACT_KEY_ELEMENT
    EXTRACT_KEY_ELEMENT --> DISPATCH

    DISPATCH -->|返品抽出条件| BRANCH_1
    DISPATCH -->|受入先| BRANCH_2
    DISPATCH -->|返品種類| BRANCH_3
    DISPATCH -->|サービス契約番号| BRANCH_4
    DISPATCH -->|案件番号| BRANCH_5
    DISPATCH -->|型番号| BRANCH_6
    DISPATCH -->|製造番号| BRANCH_7
    DISPATCH -->|検索日付選択| BRANCH_8
    DISPATCH -->|日付FROM| BRANCH_9
    DISPATCH -->|日付TO| BRANCH_10
    DISPATCH -->|承認日FROM| BRANCH_11
    DISPATCH -->|承認日TO| BRANCH_12
    DISPATCH -->|検索結果リスト| BRANCH_13
    DISPATCH -->|提供種類リスト| BRANCH_14
    DISPATCH -->|CSV用検索結果リスト| BRANCH_15
    DISPATCH -->|検索条件返品抽出条件インデックス| BRANCH_16
    DISPATCH -->|検索条件受入先インデックス| BRANCH_17
    DISPATCH -->|検索条件返品種類インデックス| BRANCH_18
    DISPATCH -->|検索条件サービス契約番号| BRANCH_19
    DISPATCH -->|検索条件案件番号| BRANCH_20
    DISPATCH -->|検索条件型番号インデックス| BRANCH_21
    DISPATCH -->|検索条件製造番号| BRANCH_22
    DISPATCH -->|検索条件検索日付選択インデックス| BRANCH_23
    DISPATCH -->|機器契約区分コード一覧| BRANCH_24
    DISPATCH -->|機器契約区分名称一覧| BRANCH_25
    DISPATCH -->|ページ数| BRANCH_26
    DISPATCH -->|画面モード| BRANCH_27
    DISPATCH -->|スタイル| BRANCH_28
    DISPATCH -->|検索条件日付FROM| BRANCH_29
    DISPATCH -->|検索条件日付TO| BRANCH_30
    DISPATCH -->|検索条件承認日FROM| BRANCH_31
    DISPATCH -->|検索条件承認日TO| BRANCH_32
    DISPATCH -->|検索条件返品機器番号| BRANCH_33
    DISPATCH -->|選択検索結果リスト| BRANCH_34
    DISPATCH -->|No Match| DEFAULT_RETURN

    BRANCH_1 --> END_NODE
    BRANCH_2 --> END_NODE
    BRANCH_3 --> END_NODE
    BRANCH_4 --> END_NODE
    BRANCH_5 --> END_NODE
    BRANCH_6 --> END_NODE
    BRANCH_7 --> END_NODE
    BRANCH_8 --> END_NODE
    BRANCH_9 --> END_NODE
    BRANCH_10 --> END_NODE
    BRANCH_11 --> END_NODE
    BRANCH_12 --> END_NODE
    BRANCH_13 --> END_NODE
    BRANCH_14 --> END_NODE
    BRANCH_15 --> END_NODE
    BRANCH_16 --> END_NODE
    BRANCH_17 --> END_NODE
    BRANCH_18 --> END_NODE
    BRANCH_19 --> END_NODE
    BRANCH_20 --> END_NODE
    BRANCH_21 --> END_NODE
    BRANCH_22 --> END_NODE
    BRANCH_23 --> END_NODE
    BRANCH_24 --> END_NODE
    BRANCH_25 --> END_NODE
    BRANCH_26 --> END_NODE
    BRANCH_27 --> END_NODE
    BRANCH_28 --> END_NODE
    BRANCH_29 --> END_NODE
    BRANCH_30 --> END_NODE
    BRANCH_31 --> END_NODE
    BRANCH_32 --> END_NODE
    BRANCH_33 --> END_NODE
    BRANCH_34 --> END_NODE
    DEFAULT_RETURN --> END_NODE
    RETURN_NULL --> END_NODE
```

**Key observation:** Every list-based branch (1–15, 34) and the two string-repeatable branches (24–25) follow an identical structural pattern: (1) extract remainder after first slash, (2) check for `"*"` to return list size, (3) parse index from next segment, (4) validate bounds, (5) delegate to the element's `loadModelData(keyElement, subkey)` or `loadModelData(subkey)`.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | Business item path identifying what data to retrieve. For scalar items: `"item name/subkey"` (e.g., `"サービス契約番号/value"`). For list beans: `"item name/index/propertyName"` (e.g., `"返品抽出条件/0/field"`). For common-info views: starts with `"//"` followed by the view key. Can be `null` (returns `null`). |
| 2 | `subkey` | `String` | Sub-property selector. For scalar String items: `"value"`, `"enable"`, or `"state"` to retrieve the data value, editability flag, or screen state respectively. For Long items: `"value"` or `"state"`. For bean list elements: the nested property name to delegate to. Can be `null` (normalized to empty string). |

**Instance fields read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `i_hmpin_chsht_joken_list` | `List<X33VDataTypeBeanInterface>` | Return item search conditions — list of data-type beans for filtering return items |
| `i_ukeire_sk_list` | `List<X33VDataTypeBeanInterface>` | Accepting party — list of data-type beans for the accepting party |
| `i_hmpin_sbt_list` | `List<X33VDataTypeBeanInterface>` | Return type — list of data-type beans for the return type |
| `i_mdl_no_list` | `List<X33VDataTypeBeanInterface>` | Model number — list of data-type beans for model numbers |
| `i_search_ymd_choice_list` | `List<X33VDataTypeBeanInterface>` | Search date choice — list of data-type beans for search date selection |
| `i_ymd_sta_list` | `List<X33VDataTypeBeanInterface>` | Date FROM — list of data-type beans for start date |
| `i_ymd_end_list` | `List<X33VDataTypeBeanInterface>` | Date TO — list of data-type beans for end date |
| `i_shonin_ymd_sta_list` | `List<X33VDataTypeBeanInterface>` | Approval date FROM — list of data-type beans for approval start date |
| `i_shonin_ymd_end_list` | `List<X33VDataTypeBeanInterface>` | Approval date TO — list of data-type beans for approval end date |
| `search_rslt_list_list` | `List<X33VDataTypeBeanInterface>` | Search results list — list of data-type beans for search result rows |
| `l_kiki_kei_div_list` | `List<X33VDataTypeBeanInterface>` | Provision type list — list of data-type beans for provision type |
| `search_rslt_list_csv_list` | `List<X33VDataTypeBeanInterface>` | CSV search results list — list of data-type beans for CSV export |
| `SEARCH_RSLT_LIST_SELECTED_list` | `List<X33VDataTypeBeanInterface>` | Selected search results list — list of data-type beans for selected items |
| `kiki_kei_div_cd_list_list` | `List<X33VDataTypeStringBean>` | Equipment contract division code list — repeatable String bean list for contract codes |
| `kiki_kei_div_nm_list_list` | `List<X33VDataTypeStringBean>` | Equipment contract division name list — repeatable String bean list for division names |

## 4. CRUD Operations / Called Services

### Pre-computed evidence from code analysis graph:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `super.loadCommonInfoData` | (Parent class) | - | Delegates to parent bean for common-info view data retrieval when key starts with `//` |
| R | `getI_svkei_no_value` | DKW00301SFBean | - | Returns the Service Contract Number (`サービス契約番号`) value |
| R | `getI_svkei_no_enabled` | DKW00301SFBean | - | Returns the edit-enable flag for Service Contract Number |
| R | `getI_svkei_no_state` | DKW00301SFBean | - | Returns the screen state of Service Contract Number |
| R | `getI_anken_no_value` | DKW00301SFBean | - | Returns the Case Number (`案件番号`) value |
| R | `getI_anken_no_enabled` | DKW00301SFBean | - | Returns the edit-enable flag for Case Number |
| R | `getI_anken_no_state` | DKW00301SFBean | - | Returns the screen state of Case Number |
| R | `getI_seizo_no_value` | DKW00301SFBean | - | Returns the Serial Number (`製造番号`) value |
| R | `getI_seizo_no_enabled` | DKW00301SFBean | - | Returns the edit-enable flag for Serial Number |
| R | `getI_seizo_no_state` | DKW00301SFBean | - | Returns the screen state of Serial Number |
| R | `getPage_num_value` | DKW00301SFBean | - | Returns the Page Number (`ページ数`) value; normalizes minus sign |
| R | `getPage_num_state` | DKW00301SFBean | - | Returns the screen state of Page Number |
| R | `getScreen_mode_value` | DKW00301SFBean | - | Returns the Screen Mode (`画面モード`) value; normalizes minus sign |
| R | `getScreen_mode_state` | DKW00301SFBean | - | Returns the screen state of Screen Mode |
| R | `getStyle_value` | DKW00301SFBean | - | Returns the Style (`スタイル`) value |
| R | `getStyle_enabled` | DKW00301SFBean | - | Returns the edit-enable flag for Style |
| R | `getStyle_state` | DKW00301SFBean | - | Returns the screen state of Style |
| R | `getSearch_hmpin_chsht_joken_value` | DKW00301SFBean | - | Returns the Search Condition Return Item Index (`検索条件返品抽出条件インデックス`) value |
| R | `getSearch_hmpin_chsht_joken_state` | DKW00301SFBean | - | Returns the screen state of Search Condition Return Item Index |
| R | `getSearch_ukeire_sk_value` | DKW00301SFBean | - | Returns the Search Condition Accepting Party Index (`検索条件受入先インデックス`) value |
| R | `getSearch_ukeire_sk_state` | DKW00301SFBean | - | Returns the screen state of Search Condition Accepting Party Index |
| R | `getSearch_hmpin_sbt_value` | DKW00301SFBean | - | Returns the Search Condition Return Type Index (`検索条件返品種類インデックス`) value |
| R | `getSearch_hmpin_sbt_state` | DKW00301SFBean | - | Returns the screen state of Search Condition Return Type Index |
| R | `getSearch_svkei_no_value` | DKW00301SFBean | - | Returns the Search Condition Service Contract Number (`検索条件サービス契約番号`) value |
| R | `getSearch_svkei_no_state` | DKW00301SFBean | - | Returns the screen state of Search Condition Service Contract Number |
| R | `getSearch_anken_no_value` | DKW00301SFBean | - | Returns the Search Condition Case Number (`検索条件案件番号`) value |
| R | `getSearch_anken_no_state` | DKW00301SFBean | - | Returns the screen state of Search Condition Case Number |
| R | `getSearch_mdl_no_value` | DKW00301SFBean | - | Returns the Search Condition Model Number Index (`検索条件型番号インデックス`) value |
| R | `getSearch_mdl_no_state` | DKW00301SFBean | - | Returns the screen state of Search Condition Model Number Index |
| R | `getSearch_seizo_no_value` | DKW00301SFBean | - | Returns the Search Condition Serial Number (`検索条件製造番号`) value |
| R | `getSearch_seizo_no_state` | DKW00301SFBean | - | Returns the screen state of Search Condition Serial Number |
| R | `getSearch_search_ymd_choice_value` | DKW00301SFBean | - | Returns the Search Condition Search Date Choice Index (`検索条件検索日付選択インデックス`) value |
| R | `getSearch_search_ymd_choice_state` | DKW00301SFBean | - | Returns the screen state of Search Condition Search Date Choice Index |
| R | `getSearch_ymd_sta_value` | DKW00301SFBean | - | Returns the Search Condition Date FROM (`検索条件日付FROM`) value |
| R | `getSearch_ymd_sta_state` | DKW00301SFBean | - | Returns the screen state of Search Condition Date FROM |
| R | `getSearch_ymd_end_value` | DKW00301SFBean | - | Returns the Search Condition Date TO (`検索条件日付TO`) value |
| R | `getSearch_ymd_end_state` | DKW00301SFBean | - | Returns the screen state of Search Condition Date TO |
| R | `getSearch_shonin_ymd_sta_value` | DKW00301SFBean | - | Returns the Search Condition Approval Date FROM (`検索条件承認日FROM`) value |
| R | `getSearch_shonin_ymd_sta_state` | DKW00301SFBean | - | Returns the screen state of Search Condition Approval Date FROM |
| R | `getSearch_shonin_ymd_end_value` | DKW00301SFBean | - | Returns the Search Condition Approval Date TO (`検索条件承認日TO`) value |
| R | `getSearch_shonin_ymd_end_state` | DKW00301SFBean | - | Returns the screen state of Search Condition Approval Date TO |
| R | `getSearch_hmpin_kiki_no_value` | DKW00301SFBean | - | Returns the Search Condition Return Equipment Number (`検索条件返品機器番号`) value |
| R | `getSearch_hmpin_kiki_no_state` | DKW00301SFBean | - | Returns the screen state of Search Condition Return Equipment Number |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | DKW00301SFBean.getJsflist_typelist_i_hmpin_chsht_joken() | `caller` -> `loadModelData("返品抽出条件/index/property", subkey)` | `i_hmpin_chsht_joken_list [R] list element loadModelData` |
| 2 | DKW00301SFBean.getJsflist_typelist_i_hmpin_sbt() | `caller` -> `loadModelData("返品種類/index/property", subkey)` | `i_hmpin_sbt_list [R] list element loadModelData` |
| 3 | DKW00301SFBean.getJsflist_typelist_i_mdl_no() | `caller` -> `loadModelData("型番号/index/property", subkey)` | `i_mdl_no_list [R] list element loadModelData` |
| 4 | DKW00301SFBean.getJsflist_typelist_i_search_ymd_choice() | `caller` -> `loadModelData("検索日付選択/index/property", subkey)` | `i_search_ymd_choice_list [R] list element loadModelData` |
| 5 | DKW00301SFBean.getJsflist_typelist_i_shonin_ymd_end() | `caller` -> `loadModelData("承認日TO/index/property", subkey)` | `i_shonin_ymd_end_list [R] list element loadModelData` |
| 6 | DKW00301SFBean.getJsflist_typelist_i_shonin_ymd_sta() | `caller` -> `loadModelData("承認日FROM/index/property", subkey)` | `i_shonin_ymd_sta_list [R] list element loadModelData` |
| 7 | DKW00301SFBean.getJsflist_typelist_i_ukeire_sk() | `caller` -> `loadModelData("受入先/index/property", subkey)` | `i_ukeire_sk_list [R] list element loadModelData` |
| 8 | DKW00301SFBean.getJsflist_typelist_i_ymd_end() | `caller` -> `loadModelData("日付TO/index/property", subkey)` | `i_ymd_end_list [R] list element loadModelData` |
| 9 | DKW00301SFBean.getJsflist_typelist_i_ymd_sta() | `caller` -> `loadModelData("日付FROM/index/property", subkey)` | `i_ymd_sta_list [R] list element loadModelData` |
| 10 | DKW00301SFBean.getJsflist_typelist_l_kiki_kei_div() | `caller` -> `loadModelData("提供種類リスト/index/property", subkey)` | `l_kiki_kei_div_list [R] list element loadModelData` |
| 11 | DKW00301SFBean.getJsflist_typelist_search_rslt_list() | `caller` -> `loadModelData("検索結果リスト/index/property", subkey)` | `search_rslt_list_list [R] list element loadModelData` |
| 12 | DKW00301SFBean.getJsflist_typelist_search_rslt_list_csv() | `caller` -> `loadModelData("CSV用検索結果リスト/index/property", subkey)` | `search_rslt_list_csv_list [R] list element loadModelData` |
| 13 | DKW00301SFBean.getJsflist_typelist_SEARCH_RSLT_LIST_SELECTED() | `caller` -> `loadModelData("選択検索結果リスト/index/property", subkey)` | `SEARCH_RSLT_LIST_SELECTED_list [R] list element loadModelData` |
| 14 | DKW00301SFBean.loadModelData() | `overloaded no-arg variant` -> `loadModelData(key, subkey)` | `recursive delegation` |

**Terminal operations from this method:** `loadModelData` [R] (recursive on list beans), `loadModelData` [R] (on string beans), `substring` [-] (string parsing), `getSearch_hmpin_kiki_no_state` [R], `getSearch_hmpin_kiki_no_value` [R], `getSearch_shonin_ymd_end_state` [R], `getSearch_shonin_ymd_end_value` [R], `getSearch_shonin_ymd_sta_state` [R], `getSearch_shonin_ymd_sta_value` [R], plus all getter methods listed in Section 4.

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] `(key == null)` (L976)

> Guard clause: if the key parameter is null, return null immediately without processing.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` |

**Block 2** — [ELSE-IF] `(subkey == null)` (L990)

> Null-safe normalization: if subkey is null, replace with an empty string to prevent downstream NPE.

| # | Type | Code |
|---|------|------|
| 1 | SET | `subkey = new String("");` // null-safe normalization |

**Block 3** — [IF] `(separaterPoint == 0)` — Common Info View Check `//` (L998)

> Checks if the key starts with `"//"` (double-slash), which indicates a common-info view data request. If true, delegates to the parent class.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `super.loadCommonInfoData(key);` // delegates common-info retrieval to parent |
| 2 | RETURN | `return ...;` |

**Block 4** — [ELSE] Path Segmentation (L1004–1009)

> For non-common-info keys, extract the first path segment before the first `/` as the `keyElement`. If no slash exists, the entire key becomes the element.

| # | Type | Code |
|---|------|------|
| 1 | SET | `separaterPoint = key.indexOf("/");` // find first slash |
| 2 | IF | `separaterPoint > 0` |
| 3 | SET | `keyElement = key.substring(0, separaterPoint);` // first path segment |
| 4 | ELSE | `keyElement = key;` // no slash; full key is the element |

After extraction, dispatch on `keyElement` via 34 branches. The following blocks detail representative patterns. All list-based branches (Blocks 5–18, 33) follow the identical pattern described in Block 5.

**Block 5** — [IF] `keyElement.equals("返品抽出条件")` — Return Item Search Conditions Bean List (L1012)

> Data-type bean list branch. Supports `"*"` wildcard for list size, index-based element access, and recursive delegation to the element's `loadModelData`.

| # | Type | Code |
|---|------|------|
| 1 | SET | `keyRemain = key.substring(separaterPoint + 1);` // remainder after first slash |
| 2 | IF | `keyRemain.equals("*")` |
| 3 | RETURN | `return Integer.valueOf(i_hmpin_chsht_joken_list.size());` // return list size |
| 4 | SET | `separaterPoint = keyRemain.indexOf("/");` // find second slash |
| 5 | IF | `separaterPoint <= 0` |
| 6 | RETURN | `return null;` // invalid path format |
| 7 | SET | `keyElement = keyRemain.substring(0, separaterPoint);` // parse index string |
| 8 | TRY-CATCH | `tmpIndexInt = Integer.valueOf(keyElement);` // parse index |
| 9 | CATCH | `NumberFormatException e` -> `return null;` // non-numeric index |
| 10 | IF | `tmpIndex < 0 || tmpIndex >= i_hmpin_chsht_joken_list.size()` |
| 11 | RETURN | `return null;` // out-of-bounds index |
| 12 | SET | `keyElement = keyRemain.substring(separaterPoint + 1);` // nested property name |
| 13 | CAST | `(X33VDataTypeBeanInterface)i_hmpin_chsht_joken_list.get(tmpIndex)` |
| 14 | CALL | `element.loadModelData(keyElement, subkey);` // recursive delegation |

**Blocks 6–12** — [ELSE-IF] Identical list-bean branches:

| Block | keyElement | List Field |
|-------|-----------|------------|
| Block 6 | `"受入先"` | `i_ukeire_sk_list` (Accepting Party) |
| Block 7 | `"返品種類"` | `i_hmpin_sbt_list` (Return Type) |
| Block 8 | `"型番号"` | `i_mdl_no_list` (Model Number) |
| Block 9 | `"検索日付選択"` | `i_search_ymd_choice_list` (Search Date Choice) |
| Block 10 | `"日付FROM"` | `i_ymd_sta_list` (Date FROM) |
| Block 11 | `"日付TO"` | `i_ymd_end_list` (Date TO) |
| Block 12 | `"承認日FROM"` | `i_shonin_ymd_sta_list` (Approval Date FROM) |

**Block 13** — [ELSE-IF] `keyElement.equals("承認日TO")` — Approval Date TO Bean List (L1417)

| Block | keyElement | List Field |
|-------|-----------|------------|
| Block 13 | `"承認日TO"` | `i_shonin_ymd_end_list` |

**Block 14** — [ELSE-IF] `keyElement.equals("検索結果リスト")` — Search Results List Bean List (L1463)

| Block | keyElement | List Field |
|-------|-----------|------------|
| Block 14 | `"検索結果リスト"` | `search_rslt_list_list` |

**Block 15** — [ELSE-IF] `keyElement.equals("提供種類リスト")` — Provision Type List Bean List (L1509)

| Block | keyElement | List Field |
|-------|-----------|------------|
| Block 15 | `"提供種類リスト"` | `l_kiki_kei_div_list` |

**Block 16** — [ELSE-IF] `keyElement.equals("CSV用検索結果リスト")` — CSV Search Results List Bean List (L1555)

| Block | keyElement | List Field |
|-------|-----------|------------|
| Block 16 | `"CSV用検索結果リスト"` | `search_rslt_list_csv_list` |

**Block 17** — [ELSE-IF] `keyElement.equals("選択検索結果リスト")` — Selected Search Results List Bean List (L1717)

| Block | keyElement | List Field |
|-------|-----------|------------|
| Block 17 | `"選択検索結果リスト"` | `SEARCH_RSLT_LIST_SELECTED_list` |

**Block 18** — [IF] `keyElement.equals("サービス契約番号")` — Service Contract Number Scalar Item (L1083)

> String scalar item. Routes by subkey to value/enable/state getters.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return getI_svkei_no_value();` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` |
| 4 | RETURN | `return getI_svkei_no_enabled();` // editability flag |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` |
| 6 | RETURN | `return getI_svkei_no_state();` // screen state |

**Block 19** — [ELSE-IF] `keyElement.equals("案件番号")` — Case Number Scalar Item (L1103)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return getI_anken_no_value();` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` |
| 4 | RETURN | `return getI_anken_no_enabled();` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` |
| 6 | RETURN | `return getI_anken_no_state();` |

**Block 20** — [ELSE-IF] `keyElement.equals("製造番号")` — Serial Number Scalar Item (L1143)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return getI_seizo_no_value();` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` |
| 4 | RETURN | `return getI_seizo_no_enabled();` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` |
| 6 | RETURN | `return getI_seizo_no_state();` |

**Block 21** — [ELSE-IF] `keyElement.equals("検索条件返品抽出条件インデックス")` — Search Condition Return Item Index (L1634)

> Search condition String item with value and state subkeys (no enable).

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return getSearch_hmpin_chsht_joken_value();` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return getSearch_hmpin_chsht_joken_state();` |

**Blocks 22–31** — [ELSE-IF] Search Condition Scalar Items (value + state only, no enable):

| Block | keyElement | Getters |
|-------|-----------|---------|
| Block 22 | `"検索条件受入先インデックス"` | `getSearch_ukeire_sk_value()`, `getSearch_ukeire_sk_state()` |
| Block 23 | `"検索条件返品種類インデックス"` | `getSearch_hmpin_sbt_value()`, `getSearch_hmpin_sbt_state()` |
| Block 24 | `"検索条件サービス契約番号"` | `getSearch_svkei_no_value()`, `getSearch_svkei_no_state()` |
| Block 25 | `"検索条件案件番号"` | `getSearch_anken_no_value()`, `getSearch_anken_no_state()` |
| Block 26 | `"検索条件型番号インデックス"` | `getSearch_mdl_no_value()`, `getSearch_mdl_no_state()` |
| Block 27 | `"検索条件製造番号"` | `getSearch_seizo_no_value()`, `getSearch_seizo_no_state()` |
| Block 28 | `"検索条件検索日付選択インデックス"` | `getSearch_search_ymd_choice_value()`, `getSearch_search_ymd_choice_state()` |
| Block 29 | `"検索条件日付FROM"` | `getSearch_ymd_sta_value()`, `getSearch_ymd_sta_state()` |
| Block 30 | `"検索条件日付TO"` | `getSearch_ymd_end_value()`, `getSearch_ymd_end_state()` |
| Block 31 | `"検索条件承認日FROM"` | `getSearch_shonin_ymd_sta_value()`, `getSearch_shonin_ymd_sta_state()` |

**Block 32** — [ELSE-IF] `keyElement.equals("検索条件承認日TO")` — Search Condition Approval Date TO (L1634 area)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return getSearch_shonin_ymd_end_value();` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return getSearch_shonin_ymd_end_state();` |

**Block 33** — [ELSE-IF] `keyElement.equals("検索条件返品機器番号")` — Search Condition Return Equipment Number (L1634 area)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return getSearch_hmpin_kiki_no_value();` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return getSearch_hmpin_kiki_no_state();` |

**Block 34** — [ELSE-IF] `keyElement.equals("機器契約区分コード一覧")` — Equipment Contract Division Code List String Repeatable (L1634 area)

> String repeatable list (not a data-type bean list). Uses `X33VDataTypeStringBean` with single-parameter `loadModelData(subkey)`.

| # | Type | Code |
|---|------|------|
| 1 | SET | `keyElement = key.substring(separaterPoint + 1);` // remainder |
| 2 | IF | `keyElement.equals("*")` |
| 3 | RETURN | `return Integer.valueOf(kiki_kei_div_cd_list_list.size());` |
| 4 | TRY-CATCH | `tmpIndexInt = Integer.valueOf(keyElement);` // parse index |
| 5 | CATCH | `NumberFormatException e` -> `return null;` |
| 6 | IF | `tmpIndex < 0 || tmpIndex >= kiki_kei_div_cd_list_list.size()` |
| 7 | RETURN | `return null;` // out-of-bounds |
| 8 | CAST | `(X33VDataTypeStringBean)kiki_kei_div_cd_list_list.get(tmpIndex)` |
| 9 | CALL | `element.loadModelData(subkey);` // single-param delegate |

**Block 35** — [ELSE-IF] `keyElement.equals("機器契約区分名称一覧")` — Equipment Contract Division Name List String Repeatable (L1634 area)

> Identical structure to Block 34 but accesses `kiki_kei_div_nm_list_list`.

| # | Type | Code |
|---|------|------|
| 1 | SET | `keyElement = key.substring(separaterPoint + 1);` |
| 2 | IF | `keyElement.equals("*")` |
| 3 | RETURN | `return Integer.valueOf(kiki_kei_div_nm_list_list.size());` |
| 4 | TRY-CATCH | `tmpIndexInt = Integer.valueOf(keyElement);` |
| 5 | CATCH | `NumberFormatException e` -> `return null;` |
| 6 | IF | `tmpIndex < 0 || tmpIndex >= kiki_kei_div_nm_list_list.size()` |
| 7 | RETURN | `return null;` |
| 8 | CAST | `(X33VDataTypeStringBean)kiki_kei_div_nm_list_list.get(tmpIndex)` |
| 9 | CALL | `element.loadModelData(subkey);` |

**Block 36** — [ELSE-IF] `keyElement.equals("ページ数")` — Page Number Long Item (L1634 area)

> Long type item. Value getter normalizes the minus sign character (full-width `−` to ASCII `-`).

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | SET | `tmpValue = getPage_num_value();` |
| 3 | IF | `tmpValue != null` |
| 4 | EXEC | `tmpValue = tmpValue.replace('−', '-');` // full-width to ASCII minus |
| 5 | RETURN | `return tmpValue;` |
| 6 | ELSE | `return null;` |
| 7 | ELSE-IF | `subkey.equalsIgnoreCase("state")` |
| 8 | RETURN | `return getPage_num_state();` |

**Block 37** — [ELSE-IF] `keyElement.equals("画面モード")` — Screen Mode Long Item (L1634 area)

> Identical pattern to Block 36: Long type, minus sign normalization.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | SET | `tmpValue = getScreen_mode_value();` |
| 3 | EXEC | `tmpValue = tmpValue.replace('−', '-');` // full-width to ASCII minus |
| 4 | RETURN | `return tmpValue;` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` |
| 6 | RETURN | `return getScreen_mode_state();` |

**Block 38** — [ELSE-IF] `keyElement.equals("スタイル")` — Style String Item (L1634 area)

> String scalar with value/enable/state (all three subkeys).

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return getStyle_value();` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` |
| 4 | RETURN | `return getStyle_enabled();` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` |
| 6 | RETURN | `return getStyle_state();` |

**Block 39** — [DEFAULT] No Match (L1730)

> If none of the 34 keyElement values match, fall through to the end and return null.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // unrecognized keyElement |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `返品抽出条件` | Field | Return Item Search Conditions — search filter criteria for filtering return items in the equipment return screen |
| `受入先` | Field | Accepting Party — the party receiving the returned equipment (e.g., warehouse, branch office) |
| `返品種類` | Field | Return Type — classification of the return reason/type (e.g., defect, cancellation, exchange) |
| `サービス契約番号` | Field | Service Contract Number — the service contract ID (`i_svkei_no`) associated with the equipment |
| `案件番号` | Field | Case Number — internal case/tracking ID (`i_anken_no`) for the return case |
| `型番号` | Field | Model Number — equipment model identifier (`i_mdl_no`) |
| `製造番号` | Field | Serial Number — unique manufacturing serial ID (`i_seizo_no`) of the equipment |
| `検索日付選択` | Field | Search Date Choice — date range selection indicator for search filters (`i_search_ymd_choice`) |
| `日付FROM` | Field | Date FROM — start date of a date range (`i_ymd_sta`) |
| `日付TO` | Field | Date TO — end date of a date range (`i_ymd_end`) |
| `承認日FROM` | Field | Approval Date FROM — start date of the approval date range (`i_shonin_ymd_sta`) |
| `承認日TO` | Field | Approval Date TO — end date of the approval date range (`i_shonin_ymd_end`) |
| `検索結果リスト` | Field | Search Results List — the list of search result rows returned from a search operation (`search_rslt_list`) |
| `提供種類リスト` | Field | Provision Type List — list of service provision types (`l_kiki_kei_div`) |
| `CSV用検索結果リスト` | Field | CSV Search Results List — search results formatted for CSV export (`search_rslt_list_csv`) |
| `選択検索結果リスト` | Field | Selected Search Results List — the subset of search results that have been user-selected (`SEARCH_RSLT_LIST_SELECTED`) |
| `機器契約区分コード一覧` | Field | Equipment Contract Division Code List — repeatable list of equipment contract division codes (`kiki_kei_div_cd_list`) |
| `機器契約区分名称一覧` | Field | Equipment Contract Division Name List — repeatable list of equipment contract division names (`kiki_kei_div_nm_list`) |
| `検索条件返品抽出条件インデックス` | Field | Search Condition Return Item Index — search filter for return item conditions |
| `検索条件受入先インデックス` | Field | Search Condition Accepting Party Index — search filter for accepting party |
| `検索条件返品種類インデックス` | Field | Search Condition Return Type Index — search filter for return type |
| `検索条件サービス契約番号` | Field | Search Condition Service Contract Number — search filter by service contract |
| `検索条件案件番号` | Field | Search Condition Case Number — search filter by case number |
| `検索条件型番号インデックス` | Field | Search Condition Model Number Index — search filter for model number |
| `検索条件製造番号` | Field | Search Condition Serial Number — search filter by serial number |
| `検索条件検索日付選択インデックス` | Field | Search Condition Search Date Choice Index — search filter for date choice |
| `検索条件日付FROM` | Field | Search Condition Date FROM — search filter start date |
| `検索条件日付TO` | Field | Search Condition Date TO — search filter end date |
| `検索条件承認日FROM` | Field | Search Condition Approval Date FROM — search filter start approval date |
| `検索条件承認日TO` | Field | Search Condition Approval Date TO — search filter end approval date |
| `検索条件返品機器番号` | Field | Search Condition Return Equipment Number — search filter for return equipment number |
| `ページ数` | Field | Page Number — pagination counter (`page_num`) for list display |
| `画面モード` | Field | Screen Mode — display mode identifier (`screen_mode`), e.g., search mode vs. edit mode |
| `スタイル` | Field | Style — CSS/style attribute for screen rendering (`style`) |
| `X33VDataTypeBeanInterface` | Interface | Data-type bean interface — common interface for complex data-type beans that support nested `loadModelData` delegation |
| `X33VDataTypeStringBean` | Class | String data-type bean — for repeatable String-typed list items with single-parameter `loadModelData` |
| `loadModelData` | Method | Core data access method — retrieves model data by key/subkey path; the bidirectional counterpart to `storeModelData` |
| `storeModelData` | Method | Data storage method — sets model data by key/subkey path (the setter counterpart) |
| Common Info View | Concept | Special key prefix `"//"` that routes data requests to shared/common information view data via the parent class |
| `key` | Parameter | Business item path — identifies what data property to retrieve, using slash-delimited path segments |
| `subkey` | Parameter | Sub-property selector — specifies the property of the item (`value`, `enable`, `state`) or delegates to nested beans |
