# Business Logic - KKW22101SF01DBean.getJsflist_op_svc_kei_no() [9 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW22101SF.KKW22101SF01DBean` |
| Layer | View/Presenter (DBean / JSF Data Bean) |
| Module | `KKW22101SF` (Package: `eo.web.webview.KKW22101SF`) |

## 1. Role

### KKW22101SF01DBean.getJsflist_op_svc_kei_no()

This method serves as a **JSF data binding adapter** that converts a typed data list (`X33VDataTypeList`) of service contract detail codes into a list of `SelectItem` objects suitable for rendering an HTML dropdown (`h:selectOneMenu`) in JSF pages. In the K-Opticom web application framework, DBeans (Data Beans) act as the bridge between the view layer (JSF/XHTML pages) and the underlying business data model. The `op_svc_kei_no_list` instance field holds a list of service detail (service sub-type) codes, and this method transforms them into selectable UI options by pairing each code's string value with its list index. This is a **shared, reusable pattern** -- the same method signature is implemented across dozens of DBean classes (e.g., `KKW02510SF01DBean`, `KKW02516SF01DBean`, `KKW00828SF05DBean`, `CKW00401SF05DBean`) to support consistent dropdown rendering of service detail data across many screens. The method performs **no service component (SC) or common business service (CBS) calls** -- it is purely a view-layer data transformation with zero external dependencies.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["getJsflist_op_svc_kei_no"])
    INIT["Initialize empty ArrayList<SelectItem>"]
    LOOP_START{"i < op_svc_kei_no_list.size()?"}
    GET["Cast element to X33VDataTypeStringBean, call getValue()"]
    CREATE_ITEM["Create new SelectItem(index.toString(), itemValue)"]
    ADD["Add SelectItem to result list"]
    INCREMENT["i++"]
    RETURN["Return populated ArrayList<SelectItem>"]
    END(("End"))

    START --> INIT
    INIT --> LOOP_START
    LOOP_START -->|true| GET
    GET --> CREATE_ITEM
    CREATE_ITEM --> ADD
    ADD --> INCREMENT
    INCREMENT --> LOOP_START
    LOOP_START -->|false| RETURN
    RETURN --> END
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `(none - instance method)` | - | - |

### Instance Fields Read

| Field Name | Type | Business Description |
|------------|------|---------------------|
| `op_svc_kei_no_list` | `X33VDataTypeList` | A typed list of service detail codes (service sub-type items). Each element is an `X33VDataTypeStringBean` holding a service contract detail code string. This list is populated by the screen controller/DBean setter before the UI renders the dropdown. |

## 4. CRUD Operations / Called Services

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

No SC (Service Component), CBS (Common Business Service), or DAO calls are made by this method. It performs a pure in-memory data transformation with zero database or external service interaction.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `(none)` | - | - | This method reads from the `op_svc_kei_no_list` instance field, which was previously populated via the `setOp_svc_kei_no_list(X33VDataTypeList)` setter. All processing is local list iteration. |

## 5. Dependency Trace

This method is a **JSF EL (Expression Language) binding target**. It is referenced from XHTML/JSF view pages via EL expressions like `#{bean.jsflist_op_svc_kei_no}` to populate `h:selectOneMenu` dropdown components. It is NOT called programmatically from other Java classes in the business layer. Below are the DBean classes that implement this same method signature, indicating the broad reuse pattern across the application:

| # | Caller (Screen/DBean) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW22101SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 2 | Screen:KKW02510SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 3 | Screen:KKW02516SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 4 | Screen:KKW00828SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 5 | Screen:KKW00128SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 6 | Screen:KKW02519SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 7 | Screen:KKW02504SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 8 | Screen:KKW02404SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 9 | Screen:KKW02304SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 10 | Screen:KKW02529SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 11 | Screen:KKW02530SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 12 | Screen:KKW02531SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 13 | Screen:KKW02532SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 14 | Screen:KKW02533SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |
| 15 | Screen:KKW00858SF | `JSF page EL: #{bean.jsflist_op_svc_kei_no}` | `op_svc_kei_no_list [R] ViewBean field (no DB)` |

**Note:** This pattern is replicated in additional DBeans across both koptWebA (KKA*-prefixed modules) and koptWebB (KKW*-prefixed modules) source sets, totaling 40+ DBean implementations. Each DBean independently holds its own `op_svc_kei_no_list` field, populated via setter injection from the screen controller or action handler.

## 6. Per-Branch Detail Blocks

**Block 1** -- SET `(initialization) (L272)`

Initialize the return data structure as an empty list.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ary = new ArrayList<SelectItem>()` // Create empty result list for JSF dropdown options |

**Block 2** -- FOR `(for(int i=0; i < op_svc_kei_no_list.size(); i++))` `(L273)`

Iterate over the `op_svc_kei_no_list` and build a `SelectItem` for each entry. Each element represents a service detail (service sub-type) code that will appear as a selectable option in the JSF dropdown.

| # | Type | Code |
|---|------|------|
| 1 | SET | `itemValue = (String) ((X33VDataTypeStringBean) op_svc_kei_no_list.get(i)).getValue()` // Extract the string value from the typed bean wrapper at index i |
| 2 | SET | `item = new SelectItem(new Integer(i).toString(), itemValue)` // Create JSF SelectItem: value=position index, label=service detail code string |
| 3 | EXEC | `ary.add(item)` // Add the constructed option to the result list |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `op_svc_kei_no` | Field | Service detail code (operation service category number) -- identifies a specific service sub-type or detail within a service contract line item |
| `op_svc_kei_no_list` | Field | Operation service detail code list -- a typed `X33VDataTypeList` holding multiple service detail codes, typically populated from a database query via a prior screen action |
| DBean | Acronym | Data Bean -- the JSF view-layer bean class that holds form data and provides data binding methods for XHTML templates |
| SelectItem | Type | JSF/JavaServer Faces component type representing one option in a dropdown (`h:selectOneMenu`) or multi-select list. The first parameter is the submitted form value (here, the list index), the second is the display label (here, the service detail code string) |
| X33VDataTypeList | Type | K-Opticom's typed list wrapper from the X33 view framework -- holds typed bean elements (`X33VDataTypeStringBean`) instead of raw strings, providing type-safe data binding in the Futurity web framework |
| X33VDataTypeStringBean | Type | String-typed data wrapper used in X33V framework. The `getValue()` method returns the underlying `String` value |
| JSF | Acronym | JavaServer Faces -- the component-based UI framework used for the K-Opticom web application |
| EL | Acronym | Expression Language -- the language used in JSF XHTML pages (e.g., `#{bean.methodName}`) to bind UI components to bean properties/methods |
| `svc_kei_no` | Field | Service category number -- the higher-level service classification code (parent of `op_svc_kei_no`) |
| JSFLIST | Prefix | Short for "JSF List" -- a naming convention for getter methods that return `ArrayList<SelectItem>` for JSF dropdown population |
