# Business Logic — KKW01034SF03DBean.listKoumokuIds() [32 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW01034SF.KKW01034SF03DBean` |
| Layer | Controller / Web Bean (inferred from package path `eo.web.webview`) |
| Module | `KKW01034SF` (Package: `eo.web.webview.KKW01034SF`) |

## 1. Role

### KKW01034SF03DBean.listKoumokuIds()

This method serves as a **static data source** that provides a predefined list of field identifiers (item names / "koumoku IDs") used by the KKW01034SF screen module for campaign management operations. It returns an `ArrayList<String>` containing 30 Japanese-language display labels — each representing a UI field that appears on the campaign-related web screens. The method implements the **factory method / data provider** design pattern: it is invoked by the parent `KKW01034SFBean.listKoumokuIds(String key)` dispatcher method, which routes requests to this bean's implementation when the requested item key matches the campaign list identifiers ("キャンペーン一覧" or "キャンペーン一覧2"). It acts as a **shared utility** shared across multiple screen controllers within the `KKW01034SF` module, supplying the canonical field set for campaign data type beans that support data-type-driven UI generation (where field labels are resolved at runtime based on the key parameter). No conditional branching, no database calls, and no instance state — the method is a pure factory that returns a constant list.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["listKoumokuIds()"])
    INIT["Initialize ArrayList&lt;String&gt; koumokuList"]

    START --> INIT

    INIT --> L1["Add: Registration Selection"]
    L1 --> L2["Add: Registration Text String"]
    L2 --> L3["Add: System ID"]
    L3 --> L4["Add: Contract Type"]
    L4 --> L5["Add: Campaign Code"]
    L5 --> L6["Add: Campaign Code Name"]
    L6 --> L7["Add: Type Code"]
    L7 --> L8["Add: Type Code Name"]
    L8 --> L9["Add: Service Code"]
    L9 --> L10["Add: Service Contract Number"]
    L10 --> L11["Add: Instant Application Flag"]
    L11 --> L12["Add: Application Month"]
    L12 --> L13["Add: Application Month Name"]
    L13 --> L14["Add: Desired Usage Start Date"]
    L14 --> L15["Add: Desired Usage Start Date Year"]
    L15 --> L16["Add: Desired Usage Start Date Month"]
    L16 --> L17["Add: Desired Usage Start Date Day"]
    L17 --> L18["Add: Display Condition 1"]
    L18 --> L19["Add: Display Condition 2"]
    L19 --> L20["Add: Display Condition Usage Start Date"]
    L20 --> L21["Add: Application Month Name Log Bot 1"]
    L21 --> L22["Add: Application Month Name Log Bot 2"]
    L22 --> L23["Add: EO Multifunction Router Exchange Flag"]
    L23 --> L24["Add: Exchange Flag Log Bot 1 Name"]
    L24 --> L25["Add: Exchange Flag Log Bot 2 Name"]
    L25 --> L26["Add: Exchange Flag Log Bot Display Condition"]
    L26 --> L27["Add: Exchange Flag Log Bot Operation Condition"]
    L27 --> L28["Add: Master Router"]
    L28 --> END(["Return koumokuList"])
```

This method has **no conditional branches** — it is a linear sequence of 32 operations: one initialization followed by 30 `add()` calls and one `return`.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | This is a `static` method with no parameters; it returns the complete predefined field list for the campaign data type bean. |
| - | `koumokuList` (local) | `ArrayList<String>` | Internal accumulator that collects the 30 campaign field identifiers before being returned. |

## 4. CRUD Operations / Called Services

This method performs **no CRUD operations**. It makes no service component (SC) or callback stub (CBS) calls. It does not interact with any database tables or entities. It is a pure in-memory factory that constructs and returns a static list of string labels.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| N/A | N/A | N/A | N/A | This method performs no data access operations. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Bean:KKW01034SF | `KKW01034SFBean.listKoumokuIds("キャンペーン一覧")` → `KKW01034SF03DBean.listKoumokuIds()` | N/A (no database access) |
| 2 | Bean:KKW01034SF | `KKW01034SFBean.listKoumokuIds("キャンペーン一覧2")` → `KKW01034SF03DBean.listKoumokuIds()` | N/A (no database access) |

**Notes:**
- The two callers identified above are within `KKW01034SFBean.java` (the parent/owner bean class).
- Caller line 2779 routes when the `key` parameter equals `"キャンペーン一覧"` (Campaign List).
- Caller line 2894 routes when the `key` parameter equals `"キャンペーン一覧2"` (Campaign List 2).
- The method is **not** called directly by any screen class (KKSV*) or CBS/C controller. It is exclusively invoked through the dispatcher pattern in its owning bean.
- No downstream SC or CBS calls exist — the method is self-contained with no terminal CRUD endpoints.

## 6. Per-Branch Detail Blocks

> **Block 1** — INIT `(variable declaration)` (L1718)

Initialize the local accumulator list that holds campaign field identifiers.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ArrayList<String> koumokuList = new ArrayList<String>();` // Create empty list for 30 campaign item labels |

> **Block 2** — SEQUENCE `(sequential add operations)` (L1719–L1748)

Populate the list with 30 Japanese-language campaign field names in a flat, sequential order. Each `add()` call pushes a string constant representing a UI column identifier.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `koumokuList.add("登録選択")` // Add "Registration Selection" |
| 2 | EXEC | `koumokuList.add("登録選択文字列")` // Add "Registration Text String" |
| 3 | EXEC | `koumokuList.add("システムID")` // Add "System ID" |
| 4 | EXEC | `koumokuList.add("契約種別")` // Add "Contract Type" |
| 5 | EXEC | `koumokuList.add("キャンペーンコード")` // Add "Campaign Code" |
| 6 | EXEC | `koumokuList.add("キャンペーンコード名称")` // Add "Campaign Code Name" |
| 7 | EXEC | `koumokuList.add("タイプコード")` // Add "Type Code" |
| 8 | EXEC | `koumokuList.add("タイプコード名称")` // Add "Type Code Name" |
| 9 | EXEC | `koumokuList.add("サービスコード")` // Add "Service Code" |
| 10 | EXEC | `koumokuList.add("サービス契約番号")` // Add "Service Contract Number" |
| 11 | EXEC | `koumokuList.add("即時適用フラグ")` // Add "Instant Application Flag" |
| 12 | EXEC | `koumokuList.add("適用月")` // Add "Application Month" |
| 13 | EXEC | `koumokuList.add("適用月名称")` // Add "Application Month Name" |
| 14 | EXEC | `koumokuList.add("利用開始希望日")` // Add "Desired Usage Start Date" |
| 15 | EXEC | `koumokuList.add("利用開始希望日＜年＞")` // Add "Desired Usage Start Date (Year)" |
| 16 | EXEC | `koumokuList.add("利用開始希望日＜月＞")` // Add "Desired Usage Start Date (Month)" |
| 17 | EXEC | `koumokuList.add("利用開始希望日＜日＞")` // Add "Desired Usage Start Date (Day)" |
| 18 | EXEC | `koumokuList.add("表示条件１")` // Add "Display Condition 1" |
| 19 | EXEC | `koumokuList.add("表示条件２")` // Add "Display Condition 2" |
| 20 | EXEC | `koumokuList.add("表示条件利用開始希望日")` // Add "Display Condition Usage Start Date" |
| 21 | EXEC | `koumokuList.add("適用月名称ログボタン１")` // Add "Application Month Name Log Button 1" |
| 22 | EXEC | `koumokuList.add("適用月名称ログボタン２")` // Add "Application Month Name Log Button 2" |
| 23 | EXEC | `koumokuList.add("EO光多機能ルーター交換有無")` // Add "EO Fiber Multifunction Router Exchange Flag" |
| 24 | EXEC | `koumokuList.add("EO光多機能ルーター交換有無ログボタン１名称")` // Add "Exchange Flag Log Button 1 Name" |
| 25 | EXEC | `koumokuList.add("EO光多機能ルーター交換有無ログボタン２名称")` // Add "Exchange Flag Log Button 2 Name" |
| 26 | EXEC | `koumokuList.add("EO光多機能ルーター交換有無ログボタン表示条件")` // Add "Exchange Flag Log Button Display Condition" |
| 27 | EXEC | `koumokuList.add("EO光多機能ルーター交換有無ログボタン操作条件")` // Add "Exchange Flag Log Button Operation Condition" |
| 28 | EXEC | `koumokuList.add("所有ルーター")` // Add "Master Router" |
| 29 | RETURN | `return koumokuList;` // Return the complete list of 30 campaign field identifiers |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `koumoku` (項目) | Japanese term | "Item" or "field" — a column/entry in a data table or UI grid |
| `登録選択` (Touroku Sentaku) | Field label | "Registration Selection" — UI choice for whether to register a new record |
| `システムID` (Sisutemu ID) | Field label | "System ID" — internal system-generated unique identifier |
| `契約種別` (Keiyaku Shubetsu) | Field label | "Contract Type" — classification of the service contract category |
| `キャンペーンコード` (Kyanpeein Koodo) | Field label | "Campaign Code" — identifier for a marketing/promotional campaign |
| `サービスコード` (Saabisu Koodo) | Field label | "Service Code" — code identifying a specific telecom service offering |
| `サービス契約番号` (Saabisu Keiyaku Bangou) | Field label | "Service Contract Number" — unique number assigned to a service contract |
| `即時適用フラグ` (Sokuteki Tekiyou Flag) | Field label | "Instant Application Flag" — whether a change takes effect immediately |
| `適用月` (Tekiyou Gatsu) | Field label | "Application Month" — the month a service change becomes effective |
| `利用開始希望日` (Riyou Kaishi Kiboubi) | Field label | "Desired Usage Start Date" — the date the customer wants service to begin |
| `表示条件` (Hyouji Jouken) | Field label | "Display Condition" — rules determining when a UI field is shown to the user |
| `EO光多機能ルーター交換有無` (EO Hikariatakashita Taroota Koukan Umu) | Field label | "EO Fiber Multifunction Router Exchange Flag" — whether to exchange the EO-branded multifunction router |
| `所有ルーター` (Shoyuu Rootaa) | Field label | "Master Router" — the primary/owned router device associated with the account |
| KKW01034SF03DBean | Class | Data-type bean class for campaign management items in the KKW01034SF web screen module |
| KKW01034SFBean | Class | Parent dispatcher bean that routes `listKoumokuIds` calls to the correct subtype bean |
| DBean | Abbreviation | "Data Bean" — a data carrier class that holds form/display data for a web screen |
| Data-type bean | Pattern | A bean whose `listKoumokuIds()` method provides field labels for a specific data type, enabling dynamic UI column generation |
