# Business Logic — KKW00801SF01DBean.storeModelData() [220 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW00801SF.KKW00801SF01DBean` |
| Layer | UI Bean / View Data Transfer (Controller/View Layer) |
| Module | `KKW00801SF` (Package: `eo.web.webview.KKW00801SF`) |

## 1. Role

### KKW00801SF01DBean.storeModelData()

This method is a **centralized model-data setter** that routes incoming property values to the correct JavaBean field based on a hierarchical key system. It operates as the **primary data ingestion point** for the `KKW00801SF01DBean` data transfer bean, converting flat key/subkey pairs into typed field assignments on the bean itself. The method supports **12 distinct data types** representing different customer service settings: Mlad Access Account, Mlad Access Domain, Mail Alias, Mailbox Capacity, Virus Check, POP ID, service start date (year/month/day), display-capacity variants, and list-based configuration options. It implements a **dispatch/routing design pattern**: each top-level key maps to a group of property setters, and for list-type items, the method **recursively delegates** to child `X33VDataTypeBeanInterface` instances by parsing a slash-delimited key path. Its role in the larger system is as a **bridge between UI-form data and the view bean model**, allowing the screen layer to set arbitrarily structured form data using a uniform key-based interface without knowing the specific bean fields at compile time.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["storeModelData key, subkey, in_value, isSetAsString"])

    START --> CHECK_NULL["key == null || subkey == null ?"]
    CHECK_NULL -->|true| EARLY_RETURN["return (no-op)"]
    CHECK_NULL -->|false| FIND_SEP["separaterPoint = key.indexOf('/')"]

    FIND_SEP --> BRANCH1["key == メールアクセスアカウント"]
    BRANCH1 -->|true| MLAD_ACCT["Set Mlad Account: value/enable/state setters"]
    BRANCH1 -->|false| BRANCH2["key == メールアクセスドメイン"]
    BRANCH2 -->|true| MLAD_DOM["Set Mlad Domain: value/enable/state setters"]
    BRANCH2 -->|false| BRANCH3["key == メールエイリアス"]
    BRANCH3 -->|true| MAIL_ALIAS["Set Mail Alias: value/enable/state setters"]
    BRANCH3 -->|false| BRANCH4["key == メールボックス容量"]
    BRANCH4 -->|true| MLBOX_CAPA_IDX["Set Mailbox Capacity Index: value/enable/state setters"]
    BRANCH4 -->|false| BRANCH5["key == ウイルスチェック"]
    BRANCH5 -->|true| VIRUS_CHK_IDX["Set Virus Check Index: value/enable/state setters"]
    BRANCH5 -->|false| BRANCH6["key == ＰＯＰＩＤ"]
    BRANCH6 -->|true| POP_ID["Set POP ID: value/enable/state setters"]
    BRANCH6 -->|false| BRANCH7["key == 利用開始日（年）"]
    BRANCH7 -->|true| USE_STAYMD_YEAR["Set Start Year: value/enable/state setters"]
    BRANCH7 -->|false| BRANCH8["key == 利用開始日（月）"]
    BRANCH8 -->|true| USE_STAYMD_MON["Set Start Month: value/enable/state setters"]
    BRANCH8 -->|false| BRANCH9["key == 利用開始日（日）"]
    BRANCH9 -->|true| USE_STAYMD_DAY["Set Start Day: value/enable/state setters"]
    BRANCH9 -->|false| BRANCH10["key == 表示用メールボックス容量"]
    BRANCH10 -->|true| MLBOX_CAPA_VAL["Set Display Mailbox Capacity: value/enable/state setters"]
    BRANCH10 -->|false| BRANCH11["key == 表示用ウイルスチェック"]
    BRANCH11 -->|true| VIRUS_CHK_VAL["Set Display Virus Check: value/enable/state setters"]
    BRANCH11 -->|false| BRANCH12["key == 登録用メールボックス容量MB値"]
    BRANCH12 -->|true| MLBOX_CAPA_MB["Set Reg Mailbox Cap MB: value/state setters (no enable)"]
    BRANCH12 -->|false| BRANCH13["key == メールPOP容量選択リスト"]
    BRANCH13 -->|true| MLBOX_CAP_OP["Parse List Key: recurse into mlbox_cap_op_list_list item"]
    BRANCH13 -->|false| BRANCH14["key == ウイルスチェック選択リスト"]
    BRANCH14 -->|true| VIRUS_CHK_OP["Parse List Key: recurse into virus_chk_op_list_list item"]
    BRANCH14 -->|false| DO_NOTHING["No matching key: no-op"]

    MLAD_ACCT --> END_NODE(["Return / Next"])
    MLAD_DOM --> END_NODE
    MAIL_ALIAS --> END_NODE
    MLBOX_CAPA_IDX --> END_NODE
    VIRUS_CHK_IDX --> END_NODE
    POP_ID --> END_NODE
    USE_STAYMD_YEAR --> END_NODE
    USE_STAYMD_MON --> END_NODE
    USE_STAYMD_DAY --> END_NODE
    MLBOX_CAPA_VAL --> END_NODE
    VIRUS_CHK_VAL --> END_NODE
    MLBOX_CAPA_MB --> END_NODE
    MLBOX_CAP_OP --> END_NODE
    VIRUS_CHK_OP --> END_NODE
    DO_NOTHING --> END_NODE
    EARLY_RETURN --> END_NODE
```

**Processing flow summary:**

1. **Null-guard** — if `key` or `subkey` is null, the method exits immediately (no-op).
2. **Path parsing** — finds the first `/` separator index for potential list-key routing.
3. **Key dispatch** — a chain of 14 `if/else-if` branches compares `key` against Japanese string literals. Each match routes to specific property setters based on the `subkey` value (`value`, `enable`, or `state` — matched case-insensitively).
4. **List recursion** — for the two list-type keys (`メールPOP容量選択リスト` and `ウイルスチェック選択リスト`), the method parses a slash-delimited path (e.g., `プランリスト/0/プラン名`) to extract an index and a child item name, then delegates to the corresponding child bean's `storeModelData` method via `X33VDataTypeBeanInterface`.
5. **No-op fallback** — if no key matches any branch, the method silently returns.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The item name (項目名) that identifies which data type group this property belongs to. Values are Japanese labels matching one of 14 data type identifiers: e.g., "メールアクセスアカウント" (Mlad Access Account), "メールボックス容量" (Mailbox Capacity), "メールPOP容量選択リスト" (Mail POP Capacity Selection List). For list-type items, this key contains a slash-delimited path like `プランリスト/0/プラン名` (Plan List / index / item name). |
| 2 | `subkey` | `String` | The property sub-category within the item group. Typically `"value"`, `"enable"`, or `"state"` (case-insensitive comparison). `"value"` sets the actual data value, `"enable"` sets whether the field is editable/enabled, and `"state"` sets the UI state (e.g., displayable, hidden, disabled). |
| 3 | `in_value` | `Object` | The data value to be stored. Cast to `String` for value/state properties, or cast to `Boolean` for enable properties. Carries form input data from the UI layer into the bean model. |
| 4 | `isSetAsString` | `boolean` | Flag indicating whether to set the value as a String for Long-type item properties. Per the Javadoc: "Long型項目ValueプロパティへString型値の設定を行う場合true" — true when setting a String-type value to a Long-type item's Value property. This method currently reads the flag but does not branch on it in the visible code path. |

**Instance fields read:**

| Field | Type | Purpose |
|-------|------|---------|
| `mlbox_cap_op_list_list` | `ArrayList` | List of child beans for mail POP capacity selection items. Accessed for recursive delegation. |
| `virus_chk_op_list_list` | `ArrayList` | List of child beans for virus check selection items. Accessed for recursive delegation. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JKKAdEditCC.substring` | JKKAdEditCC | - | Calls `substring` in `JKKAdEditCC` |
| - | `JKKAdEdit.substring` | JKKAdEdit | - | Calls `substring` in `JKKAdEdit` |
| - | `JKKTelnoInfoAddMapperCC.substring` | JKKTelnoInfoAddMapperCC | - | Calls `substring` in `JKKTelnoInfoAddMapperCC` |
| - | `JDKejbStringEdit.substring` | JDKejbStringEdit | - | Calls `substring` in `JDKejbStringEdit` |
| - | `KKW00801SF01DBean.setMailalias_enabled` | KKW00801SF01DBean | - | Calls `setMailalias_enabled` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMailalias_state` | KKW00801SF01DBean | - | Calls `setMailalias_state` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMailalias_value` | KKW00801SF01DBean | - | Calls `setMailalias_value` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlad_account_enabled` | KKW00801SF01DBean | - | Calls `setMlad_account_enabled` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlad_account_state` | KKW00801SF01DBean | - | Calls `setMlad_account_state` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlad_account_value` | KKW00801SF01DBean | - | Calls `setMlad_account_value` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlad_domain_enabled` | KKW00801SF01DBean | - | Calls `setMlad_domain_enabled` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlad_domain_state` | KKW00801SF01DBean | - | Calls `setMlad_domain_state` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlad_domain_value` | KKW00801SF01DBean | - | Calls `setMlad_domain_value` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlbox_capa_index_enabled` | KKW00801SF01DBean | - | Calls `setMlbox_capa_index_enabled` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlbox_capa_index_state` | KKW00801SF01DBean | - | Calls `setMlbox_capa_index_state` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlbox_capa_index_value` | KKW00801SF01DBean | - | Calls `setMlbox_capa_index_value` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlbox_capa_mb_state` | KKW00801SF01DBean | - | Calls `setMlbox_capa_mb_state` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlbox_capa_mb_value` | KKW00801SF01DBean | - | Calls `setMlbox_capa_mb_value` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlbox_capa_value_enabled` | KKW00801SF01DBean | - | Calls `setMlbox_capa_value_enabled` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlbox_capa_value_state` | KKW00801SF01DBean | - | Calls `setMlbox_capa_value_state` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setMlbox_capa_value_value` | KKW00801SF01DBean | - | Calls `setMlbox_capa_value_value` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setPop_id_enabled` | KKW00801SF01DBean | - | Calls `setPop_id_enabled` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setPop_id_state` | KKW00801SF01DBean | - | Calls `setPop_id_state` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setPop_id_value` | KKW00801SF01DBean | - | Calls `setPop_id_value` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setUse_staymd_day_enabled` | KKW00801SF01DBean | - | Calls `setUse_staymd_day_enabled` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setUse_staymd_day_state` | KKW00801SF01DBean | - | Calls `setUse_staymd_day_state` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setUse_staymd_day_value` | KKW00801SF01DBean | - | Calls `setUse_staymd_day_value` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setUse_staymd_mon_enabled` | KKW00801SF01DBean | - | Calls `setUse_staymd_mon_enabled` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setUse_staymd_mon_state` | KKW00801SF01DBean | - | Calls `setUse_staymd_mon_state` in `KKW00801SF01DBean` |
| - | `KKW00801SF01DBean.setUse_staymd_mon_value` | KKW00801SF01DBean | - | Calls `setUse_staymd_mon_value` in `KKW00801SF01DBean` |

**CRUD classification:**

This method performs **no direct database or entity operations**. It is a pure **UI-layer data setter** (Update-only on the bean model). All calls are setter methods (`U`) on the bean's own fields or recursive delegation to child bean `storeModelData` methods.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `KKW00801SF01DBean.setMlad_account_value` | - | - | Sets Mlad Account value (String) on the bean model |
| U | `KKW00801SF01DBean.setMlad_account_enabled` | - | - | Sets Mlad Account enabled flag (Boolean) on the bean model |
| U | `KKW00801SF01DBean.setMlad_account_state` | - | - | Sets Mlad Account state (String) on the bean model |
| U | `KKW00801SF01DBean.setMlad_domain_value` | - | - | Sets Mlad Domain value (String) on the bean model |
| U | `KKW00801SF01DBean.setMlad_domain_enabled` | - | - | Sets Mlad Domain enabled flag (Boolean) on the bean model |
| U | `KKW008081SF01DBean.setMlad_domain_state` | - | - | Sets Mlad Domain state (String) on the bean model |
| U | `KKW00801SF01DBean.setMailalias_value` | - | - | Sets Mail Alias value (String) on the bean model |
| U | `KKW00801SF01DBean.setMailalias_enabled` | - | - | Sets Mail Alias enabled flag (Boolean) on the bean model |
| U | `KKW00801SF01DBean.setMailalias_state` | - | - | Sets Mail Alias state (String) on the bean model |
| U | `KKW00801SF01DBean.setMlbox_capa_index_value` | - | - | Sets Mailbox Capacity Index value (String) on the bean model |
| U | `KKW00801SF01DBean.setMlbox_capa_index_enabled` | - | - | Sets Mailbox Capacity Index enabled flag (Boolean) on the bean model |
| U | `KKW00801SF01DBean.setMlbox_capa_index_state` | - | - | Sets Mailbox Capacity Index state (String) on the bean model |
| U | `KKW00801SF01DBean.setVirus_chk_index_value` | - | - | Sets Virus Check Index value (String) on the bean model |
| U | `KKW00801SF01DBean.setVirus_chk_index_enabled` | - | - | Sets Virus Check Index enabled flag (Boolean) on the bean model |
| U | `KKW00801SF01DBean.setVirus_chk_index_state` | - | - | Sets Virus Check Index state (String) on the bean model |
| U | `KKW00801SF01DBean.setPop_id_value` | - | - | Sets POP ID value (String) on the bean model |
| U | `KKW00801SF01DBean.setPop_id_enabled` | - | - | Sets POP ID enabled flag (Boolean) on the bean model |
| U | `KKW00801SF01DBean.setPop_id_state` | - | - | Sets POP ID state (String) on the bean model |
| U | `KKW00801SF01DBean.setUse_staymd_year_value` | - | - | Sets Service Start Year value (String) on the bean model |
| U | `KKW00801SF01DBean.setUse_staymd_year_enabled` | - | - | Sets Service Start Year enabled flag (Boolean) on the bean model |
| U | `KKW00801SF01DBean.setUse_staymd_year_state` | - | - | Sets Service Start Year state (String) on the bean model |
| U | `KKW00801SF01DBean.setUse_staymd_mon_value` | - | - | Sets Service Start Month value (String) on the bean model |
| U | `KKW00801SF01DBean.setUse_staymd_mon_enabled` | - | - | Sets Service Start Month enabled flag (Boolean) on the bean model |
| U | `KKW00801SF01DBean.setUse_staymd_mon_state` | - | - | Sets Service Start Month state (String) on the bean model |
| U | `KKW00801SF01DBean.setUse_staymd_day_value` | - | - | Sets Service Start Day value (String) on the bean model |
| U | `KKW00801SF01DBean.setUse_staymd_day_enabled` | - | - | Sets Service Start Day enabled flag (Boolean) on the bean model |
| U | `KKW00801SF01DBean.setUse_staymd_day_state` | - | - | Sets Service Start Day state (String) on the bean model |
| U | `KKW00801SF01DBean.setMlbox_capa_value_value` | - | - | Sets Display Mailbox Capacity value (String) on the bean model |
| U | `KKW00801SF01DBean.setMlbox_capa_value_enabled` | - | - | Sets Display Mailbox Capacity enabled flag (Boolean) on the bean model |
| U | `KKW00801SF01DBean.setMlbox_capa_value_state` | - | - | Sets Display Mailbox Capacity state (String) on the bean model |
| U | `KKW00801SF01DBean.setVirus_chk_value_value` | - | - | Sets Display Virus Check value (String) on the bean model |
| U | `KKW00801SF01DBean.setVirus_chk_value_enabled` | - | - | Sets Display Virus Check enabled flag (Boolean) on the bean model |
| U | `KKW00801SF01DBean.setVirus_chk_value_state` | - | - | Sets Display Virus Check state (String) on the bean model |
| U | `KKW00801SF01DBean.setMlbox_capa_mb_value` | - | - | Sets Registration Mailbox Capacity MB value (String) on the bean model |
| U | `KKW00801SF01DBean.setMlbox_capa_mb_state` | - | - | Sets Registration Mailbox Capacity MB state (String) on the bean model |
| - | `substring` | - | - | String `substring` calls for list-key path parsing |

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 2 methods.
Terminal operations from this method: `storeModelData` [-], `storeModelData` [-], `storeModelData` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `storeModelData` [-], `storeModelData` [-], `storeModelData` [-], `substring` [-], `substring` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `KKW00801SF01DBean.storeModelData()` (self-recursive via child beans) | `storeModelData(key, subkey, in_value, isSetAsString)` | `setMlad_account_value [U] bean field`, `setMlad_account_enabled [U] bean field`, `setMlad_account_state [U] bean field`, `setMlad_domain_value [U] bean field`, `setMailalias_value [U] bean field`, `setMlbox_capa_index_value [U] bean field`, `setVirus_chk_index_value [U] bean field`, `setPop_id_value [U] bean field`, `setUse_staymd_* [U] bean fields`, `setMlbox_capa_value_value [U] bean field`, `setVirus_chk_value_value [U] bean field`, `setMlbox_capa_mb_value [U] bean field` |
| 2 | `X33VDataTypeBeanInterface.storeModelData()` (recursive delegation for list items) | `storeModelData(key, subkey, in_value, isSetAsString)` -> child bean's `storeModelData(key, subkey, in_value, isSetAsString)` | Same terminal operations as above, recursively on child beans |

**Notes:**
- This method is called by itself **indirectly** through child beans in the `mlbox_cap_op_list_list` and `virus_chk_op_list_list` — these child beans implement `X33VDataTypeBeanInterface` and each has its own `storeModelData` method.
- No screen entry points (KKSV*) or CBS (COBOL batch) callers were found within 8 hops of the call graph. The method is a pure bean-level data setter.
- All terminal operations are bean field assignments (`set*`) — no database, SC, or CBS calls originate from this method.

## 6. Per-Branch Detail Blocks

### Block 1 — IF (key == null || subkey == null) (L805)

Guard clause: if either `key` or `subkey` is null, processing is halted and the method returns immediately.
(日本語: key, subkeyがnullの場合、処理を中止 — If key and subkey are null, abort processing)

| # | Type | Code |
|---|------|------|
| 1 | SET | `separaterPoint = key.indexOf("/")` // Find first slash in key for potential list-key routing [L808] |
| 2 | RETURN | `return` // Null-key early exit |

---

### Block 2 — IF/ELSE-IF chain: Data Type Dispatch (L811–L1018)

The method branches on the `key` parameter against 14 Japanese string literals. Each matched key then dispatches on `subkey` (case-insensitive) to one of three property setters.

---

#### Block 2.1 — IF `key.equals("メールアクセスアカウント")` [Item ID: `mlad_account`] (L812)

Data type: Mlad Access Account. Sets the account-related fields.
(日本語: データタイプがStringの項目"メールアクセスアカウント"(項目ID:mlad_account) — Data type is String item "Mlad Access Account" (Item ID: mlad_account))

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `subkey.equalsIgnoreCase("value")` → `setMlad_account_value((String)in_value)` [L813] |
| 2 | IF-ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `setMlad_account_enabled((Boolean)in_value)` [L815] (日本語: subkeyが"enable"の場合、mlad_account_enabledのsetterを実行する。 — If subkey is "enable", execute the mlad_account_enabled setter.) |
| 3 | IF-ELSE-IF | `subkey.equalsIgnoreCase("state")` → `setMlad_account_state((String)in_value)` [L817] (日本語: subkeyが"state"の場合、ステータスを返す。 — If subkey is "state", return the status.) |

---

#### Block 2.2 — ELSE-IF `key.equals("メールアクセスドメイン")` [Item ID: `mlad_domain`] (L824)

Data type: Mlad Access Domain. Sets the domain-related fields.
(日本語: データタイプがStringの項目"メールアクセスドメイン"(項目ID:mlad_domain) — Data type is String item "Mlad Access Domain" (Item ID: mlad_domain))

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `subkey.equalsIgnoreCase("value")` → `setMlad_domain_value((String)in_value)` [L825] |
| 2 | IF-ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `setMlad_domain_enabled((Boolean)in_value)` [L827] (日本語: subkeyが"enable"の場合、mlad_domain_enabledのsetterを実行する。 — If subkey is "enable", execute the mlad_domain_enabled setter.) |
| 3 | IF-ELSE-IF | `subkey.equalsIgnoreCase("state")` → `setMlad_domain_state((String)in_value)` [L829] (日本語: subkeyが"state"の場合、ステータスを返す。 — If subkey is "state", return the status.) |

---

#### Block 2.3 — ELSE-IF `key.equals("メールエイリアス")` [Item ID: `mailalias`] (L836)

Data type: Mail Alias. Sets the mail alias fields.
(日本語: データタイプがStringの項目"メールエイリアス"(項目ID:mailalias) — Data type is String item "Mail Alias" (Item ID: mailalias))

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `subkey.equalsIgnoreCase("value")` → `setMailalias_value((String)in_value)` [L837] |
| 2 | IF-ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `setMailalias_enabled((Boolean)in_value)` [L839] (日本語: subkeyが"enable"の場合、mailalias_enabledのsetterを実行する。 — If subkey is "enable", execute the mailalias_enabled setter.) |
| 3 | IF-ELSE-IF | `subkey.equalsIgnoreCase("state")` → `setMailalias_state((String)in_value)` [L841] (日本語: subkeyが"state"の場合、ステータスを返す。 — If subkey is "state", return the status.) |

---

#### Block 2.4 — ELSE-IF `key.equals("メールボックス容量")` [Item ID: `mlbox_capa_index`] (L848)

Data type: Mailbox Capacity Index. Sets the mailbox capacity fields.
(日本語: データタイプがStringの項目"メールボックス容量"(項目ID:mlbox_capa_index) — Data type is String item "Mailbox Capacity" (Item ID: mlbox_capa_index))

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `subkey.equalsIgnoreCase("value")` → `setMlbox_capa_index_value((String)in_value)` [L849] |
| 2 | IF-ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `setMlbox_capa_index_enabled((Boolean)in_value)` [L851] (日本語: subkeyが"enable"の場合、mlbox_capa_index_enabledのsetterを実行する。 — If subkey is "enable", execute the mlbox_capa_index_enabled setter.) |
| 3 | IF-ELSE-IF | `subkey.equalsIgnoreCase("state")` → `setMlbox_capa_index_state((String)in_value)` [L853] (日本語: subkeyが"state"の場合、ステータスを返す。 — If subkey is "state", return the status.) |

---

#### Block 2.5 — ELSE-IF `key.equals("ウイルスチェック")` [Item ID: `virus_chk_index`] (L860)

Data type: Virus Check Index. Sets the virus check fields.
(日本語: データタイプがStringの項目"ウイルスチェック"(項目ID:virus_chk_index) — Data type is String item "Virus Check" (Item ID: virus_chk_index))

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `subkey.equalsIgnoreCase("value")` → `setVirus_chk_index_value((String)in_value)` [L861] |
| 2 | IF-ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `setVirus_chk_index_enabled((Boolean)in_value)` [L863] (日本語: subkeyが"enable"の場合、virus_chk_index_enabledのsetterを実行する。 — If subkey is "enable", execute the virus_chk_index_enabled setter.) |
| 3 | IF-ELSE-IF | `subkey.equalsIgnoreCase("state")` → `setVirus_chk_index_state((String)in_value)` [L865] (日本語: subkeyが"state"の場合、ステータスを返す。 — If subkey is "state", return the status.) |

---

#### Block 2.6 — ELSE-IF `key.equals("ＰＯＰＩＤ")` [Item ID: `pop_id`] (L872)

Data type: POP ID. Sets the POP ID fields.
(日本語: データタイプがStringの項目"ＰＯＰＩＤ"(項目ID:pop_id) — Data type is String item "POP ID" (Item ID: pop_id))

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `subkey.equalsIgnoreCase("value")` → `setPop_id_value((String)in_value)` [L873] |
| 2 | IF-ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `setPop_id_enabled((Boolean)in_value)` [L875] (日本語: subkeyが"enable"の場合、pop_id_enabledのsetterを実行する。 — If subkey is "enable", execute the pop_id_enabled setter.) |
| 3 | IF-ELSE-IF | `subkey.equalsIgnoreCase("state")` → `setPop_id_state((String)in_value)` [L877] (日本語: subkeyが"state"の場合、ステータスを返す。 — If subkey is "state", return the status.) |

---

#### Block 2.7 — ELSE-IF `key.equals("利用開始日（年）")` [Item ID: `use_staymd_year`] (L884)

Data type: Service Start Date (Year). Sets the year portion of the start date.
(日本語: データタイプがStringの項目"利用開始日（年）"(項目ID:use_staymd_year) — Data type is String item "Service Start Date (Year)" (Item ID: use_staymd_year))

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `subkey.equalsIgnoreCase("value")` → `setUse_staymd_year_value((String)in_value)` [L885] |
| 2 | IF-ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `setUse_staymd_year_enabled((Boolean)in_value)` [L887] (日本語: subkeyが"enable"の場合、use_staymd_year_enabledのsetterを実行する。 — If subkey is "enable", execute the use_staymd_year_enabled setter.) |
| 3 | IF-ELSE-IF | `subkey.equalsIgnoreCase("state")` → `setUse_staymd_year_state((String)in_value)` [L889] (日本語: subkeyが"state"の場合、ステータスを返す。 — If subkey is "state", return the status.) |

---

#### Block 2.8 — ELSE-IF `key.equals("利用開始日（月）")` [Item ID: `use_staymd_mon`] (L896)

Data type: Service Start Date (Month). Sets the month portion of the start date.
(日本語: データタイプがStringの項目"利用開始日（月）"(項目ID:use_staymd_mon) — Data type is String item "Service Start Date (Month)" (Item ID: use_staymd_mon))

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `subkey.equalsIgnoreCase("value")` → `setUse_staymd_mon_value((String)in_value)` [L897] |
| 2 | IF-ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `setUse_staymd_mon_enabled((Boolean)in_value)` [L899] (日本語: subkeyが"enable"の場合、use_staymd_mon_enabledのsetterを実行する。 — If subkey is "enable", execute the use_staymd_mon_enabled setter.) |
| 3 | IF-ELSE-IF | `subkey.equalsIgnoreCase("state")` → `setUse_staymd_mon_state((String)in_value)` [L901] (日本語: subkeyが"state"の場合、ステータスを返す。 — If subkey is "state", return the status.) |

---

#### Block 2.9 — ELSE-IF `key.equals("利用開始日（日）")` [Item ID: `use_staymd_day`] (L908)

Data type: Service Start Date (Day). Sets the day portion of the start date.
(日本語: データタイプがStringの項目"利用開始日（日）"(項目ID:use_staymd_day) — Data type is String item "Service Start Date (Day)" (Item ID: use_staymd_day))

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `subkey.equalsIgnoreCase("value")` → `setUse_staymd_day_value((String)in_value)` [L909] |
| 2 | IF-ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `setUse_staymd_day_enabled((Boolean)in_value)` [L911] (日本語: subkeyが"enable"の場合、use_staymd_day_enabledのsetterを実行する。 — If subkey is "enable", execute the use_staymd_day_enabled setter.) |
| 3 | IF-ELSE-IF | `subkey.equalsIgnoreCase("state")` → `setUse_staymd_day_state((String)in_value)` [L913] (日本語: subkeyが"state"の場合、ステータスを返す。 — If subkey is "state", return the status.) |

---

#### Block 2.10 — ELSE-IF `key.equals("表示用メールボックス容量")` [Item ID: `mlbox_capa_value`] (L920)

Data type: Display Mailbox Capacity. Sets the display-capacity variant fields.
(日本語: データタイプがStringの項目"表示用メールボックス容量"(項目ID:mlbox_capa_value) — Data type is String item "Display Mailbox Capacity" (Item ID: mlbox_capa_value))

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `subkey.equalsIgnoreCase("value")` → `setMlbox_capa_value_value((String)in_value)` [L921] |
| 2 | IF-ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `setMlbox_capa_value_enabled((Boolean)in_value)` [L923] (日本語: subkeyが"enable"の場合、mlbox_capa_value_enabledのsetterを実行する。 — If subkey is "enable", execute the mlbox_capa_value_enabled setter.) |
| 3 | IF-ELSE-IF | `subkey.equalsIgnoreCase("state")` → `setMlbox_capa_value_state((String)in_value)` [L925] (日本語: subkeyが"state"の場合、ステータスを返す。 — If subkey is "state", return the status.) |

---

#### Block 2.11 — ELSE-IF `key.equals("表示用ウイルスチェック")` [Item ID: `virus_chk_value`] (L932)

Data type: Display Virus Check. Sets the display-variant virus check fields.
(日本語: データタイプがStringの項目"表示用ウイルスチェック"(項目ID:virus_chk_value) — Data type is String item "Display Virus Check" (Item ID: virus_chk_value))

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `subkey.equalsIgnoreCase("value")` → `setVirus_chk_value_value((String)in_value)` [L933] |
| 2 | IF-ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `setVirus_chk_value_enabled((Boolean)in_value)` [L935] (日本語: subkeyが"enable"の場合、virus_chk_value_enabledのsetterを実行する。 — If subkey is "enable", execute the virus_chk_value_enabled setter.) |
| 3 | IF-ELSE-IF | `subkey.equalsIgnoreCase("state")` → `setVirus_chk_value_state((String)in_value)` [L937] (日本語: subkeyが"state"の場合、ステータスを返す。 — If subkey is "state", return the status.) |

---

#### Block 2.12 — ELSE-IF `key.equals("登録用メールボックス容量MB値")` [Item ID: `mlbox_capa_mb`] (L944)

Data type: Registration Mailbox Capacity MB Value. Note: this branch only handles `value` and `state` — **no `enable` setter**.
(日本語: データタイプがStringの項目"登録用メールボックス容量MB値"(項目ID:mlbox_capa_mb) — Data type is String item "Registration Mailbox Capacity MB Value" (Item ID: mlbox_capa_mb))

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `subkey.equalsIgnoreCase("value")` → `setMlbox_capa_mb_value((String)in_value)` [L945] |
| 2 | IF-ELSE-IF | `subkey.equalsIgnoreCase("state")` → `setMlbox_capa_mb_state((String)in_value)` [L947] (日本語: subkeyが"state"の場合、ステータスを返す。 — If subkey is "state", return the status.) |

**Note:** This is the only item group that lacks an `enable` setter. The MB value field is always enabled — there is no editability toggle.

---

#### Block 2.13 — ELSE-IF `key.equals("メールPOP容量選択リスト")` [List delegation] (L952)

Data type: Mail POP Capacity Selection List. This is a **list-type data type** — the key contains a slash-delimited path (e.g., `プランリスト/0/プラン名`). The method parses the path to extract an index and delegates to the child bean.
(日本語: データタイプビューン項目 "メールPOP容量選択リスト"(項目ID:mlbox_cap_op_list) — List-type view item "Mail POP Capacity Selection List" (Item ID: mlbox_cap_op_list))

| # | Type | Code |
|---|------|------|
| 1 | SET | `keyRemain = key.substring(separaterPoint + 1)` // Get remainder after first "/" from path like `プランリスト/0/プラン名` [L954] (日本語: keyの次の要素を取得。 — Get the next element of key.) |
| 2 | SET | `separaterPoint = keyRemain.indexOf("/")` // Find next separator in remainder [L955] (日本語: 次の区切り符号(ここでは"/")を検索する。 — Search for next separator character (here "/").) |
| 3 | IF | `separaterPoint > 0` — separator was properly specified [L956] (日本語: 区切り符号が正しく指定された場合 — If the separator was properly specified.) |
| 3.1 | SET | `key = keyRemain.substring(0, separaterPoint)` // Extract index string [L957] |
| 3.2 | SET | `tmpIndexInt = null` // Initialize index parser [L959] |
| 3.3 | TRY | `tmpIndexInt = Integer.valueOf(key)` // Attempt to parse index as integer [L960] |
| 3.4 | CATCH | `NumberFormatException e` → `tmpIndexInt = null` // Index is not a numeric string, reset to null [L963] (日本語: インデックス値が数値文字列でない場合は、ここで再設定。 — If index value is not a numeric string, re-set here.) |
| 3.5 | IF | `tmpIndexInt != null` — index parsed successfully [L964] (日本語: インデックス値が数値文字列の場合 — If index value is a numeric string.) |
| 3.5.1 | SET | `tmpIndex = tmpIndexInt.intValue()` [L965] |
| 3.5.2 | IF | `tmpIndex >= 0 && tmpIndex < mlbox_cap_op_list_list.size()` — index within list bounds [L966] (日本語: インデックス値がリスト個数-1以下の場合 — If index value is less than list count minus one.) |
| 3.5.2.1 | SET | `key = keyRemain.substring(separaterPoint + 1)` // Extract child item name after index [L968] (日本語: 項目名を生成し、データタイプビューンのstoreModelDataの戻り値を返す — Generate the item name and return from the data type view's storeModelData.) |
| 3.5.2.2 | CALL | `((X33VDataTypeBeanInterface) mlbox_cap_op_list_list.get(tmpIndex)).storeModelData(key, subkey, in_value, isSetAsString)` [L969] (日本語: データタイプビューン型では項目名、subkey、入力値およびisSetAsStringフラグを引数に指定 — For data type view type, specify item name, subkey, input value, and isSetAsString flag as arguments.) |

---

#### Block 2.14 — ELSE-IF `key.equals("ウイルスチェック選択リスト")` [List delegation] (L977)

Data type: Virus Check Selection List. Same pattern as Block 2.13 but operates on `virus_chk_op_list_list`.
(日本語: データタイプビューン項目 "ウイルスチェック選択リスト"(項目ID:virus_chk_op_list) — List-type view item "Virus Check Selection List" (Item ID: virus_chk_op_list))

| # | Type | Code |
|---|------|------|
| 1 | SET | `keyRemain = key.substring(separaterPoint + 1)` // Get remainder after first "/" [L979] (日本語: keyの次の要素を取得。 — Get the next element of key.) |
| 2 | SET | `separaterPoint = keyRemain.indexOf("/")` // Find next separator [L980] (日本語: 次の区切り符号(ここでは"/")を検索する。 — Search for next separator.) |
| 3 | IF | `separaterPoint > 0` — separator properly specified [L981] (日本語: 区切り符号が正しく指定された場合 — If separator was properly specified.) |
| 3.1 | SET | `key = keyRemain.substring(0, separaterPoint)` // Extract index string [L982] |
| 3.2 | SET | `tmpIndexInt = null` [L984] |
| 3.3 | TRY | `tmpIndexInt = Integer.valueOf(key)` [L985] |
| 3.4 | CATCH | `NumberFormatException e` → `tmpIndexInt = null` [L988] (日本語: インデックス値が数値文字列でない場合は、ここで再設定。 — If index is not a numeric string, re-set.) |
| 3.5 | IF | `tmpIndexInt != null` — index is a valid number [L989] (日本語: インデックス値が数値文字列の場合 — If index value is a numeric string.) |
| 3.5.1 | SET | `tmpIndex = tmpIndexInt.intValue()` [L990] |
| 3.5.2 | IF | `tmpIndex >= 0 && tmpIndex < virus_chk_op_list_list.size()` — index within bounds [L991] (日本語: インデックス値がリスト個数-1以下の場合 — If index value is less than list count minus one.) |
| 3.5.2.1 | SET | `key = keyRemain.substring(separaterPoint + 1)` // Extract child item name [L993] (日本語: 項目名を生成し、データタイプビューンのstoreModelDataの戻り値を返す — Generate item name and return from data type view's storeModelData.) |
| 3.5.2.2 | CALL | `((X33VDataTypeBeanInterface) virus_chk_op_list_list.get(tmpIndex)).storeModelData(key, subkey, in_value, isSetAsString)` [L994] (日本語: データタイプビューン型では項目名、subkey、入力値およびisSetAsStringフラグを引数に指定 — For data type view type, specify item name, subkey, input value, and isSetAsString flag as arguments.) |

---

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| メールアクセスアカウント | Field | Mlad Access Account — the M-Lad (mobile lightweight access) account credentials for email access services. Item ID: `mlad_account` |
| メールアクセスドメイン | Field | Mlad Access Domain — the domain name used for M-Lad email access. Item ID: `mlad_domain` |
| メールエイリアス | Field | Mail Alias — email forwarding/alias address configuration. Item ID: `mailalias` |
| メールボックス容量 | Field | Mailbox Capacity — the indexed storage capacity settings for a mailbox. Item ID: `mlbox_capa_index` |
| ウイルスチェック | Field | Virus Check — indexed virus scanning configuration for email attachments. Item ID: `virus_chk_index` |
| ＰＯＰＩＤ | Field | POP ID — Post Office Protocol identifier for incoming email server configuration. Item ID: `pop_id` |
| 利用開始日（年） | Field | Service Start Date (Year) — the year component of when the service was activated. Item ID: `use_staymd_year` |
| 利用開始日（月） | Field | Service Start Date (Month) — the month component of the service activation date. Item ID: `use_staymd_mon` |
| 利用開始日（日） | Field | Service Start Date (Day) — the day component of the service activation date. Item ID: `use_staymd_day` |
| 表示用メールボックス容量 | Field | Display Mailbox Capacity — the mailbox capacity value shown to the user (display variant). Item ID: `mlbox_capa_value` |
| 表示用ウイルスチェック | Field | Display Virus Check — the virus check setting shown to the user (display variant). Item ID: `virus_chk_value` |
| 登録用メールボックス容量MB値 | Field | Registration Mailbox Capacity MB Value — the raw mailbox capacity value in MB used for registration (not display). Item ID: `mlbox_capa_mb` |
| メールPOP容量選択リスト | Field | Mail POP Capacity Selection List — a list-based configuration item containing selectable POP capacity options. Item ID: `mlbox_cap_op_list` |
| ウイルスチェック選択リスト | Field | Virus Check Selection List — a list-based configuration item containing selectable virus check options. Item ID: `virus_chk_op_list` |
| 項目名 (key) | Parameter | Item name — the business-level name of the field being set, used as the dispatch key |
| サブキー (subkey) | Parameter | Sub-key — the property subtype within an item (value, enable, or state) |
| value | Subkey | The actual data value to store for the field |
| enable | Subkey | The enabled/editable flag for the field — controls whether the user can modify this setting in the UI |
| state | Subkey | The UI state string for the field — controls display behavior (e.g., visible, hidden, disabled) |
| X33VDataTypeBeanInterface | Interface | Data type view bean interface — the contract that child list items implement, each containing their own `storeModelData` method for recursive delegation |
| storeModelData | Method | Store model data — the bean method that ingests flat key/subkey pairs and routes them to the correct typed field setter |
| plan list (プランリスト) | Concept | Plan selection list — a list of service plan options (e.g., mailbox capacity plans, virus check plans) that appear in the UI for user selection |
