# Business Logic — JFUMkmInfoAddFrontiaPreTrnCC.checkNode() [51 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JFUMkmInfoAddFrontiaPreTrnCC` |
| Layer | CC/Common Component |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JFUMkmInfoAddFrontiaPreTrnCC.checkNode()

This method serves as a pre-registration validation gate for the **eo Light Network (Frontier) new subscription API**. When a customer submits a new service registration request through the eo Light (Fujitsu's fiber optic ISP service) Frontier API, this method checks whether the request payload contains data for **additional optional service categories** beyond the base fiber internet plan.

The method implements a **guarded early-return pattern**: it inspects the incoming `ccMsg` map for the presence of 11 distinct service-type keys. If any of these optional service sections are present, the method returns `false`, signaling to the caller that the registration cannot proceed as-is because **additional content has been configured** (登録時に内容設定されていたらエラー — "error if content is set during registration"). This enforces a business rule that certain composite or multi-service requests must be handled through alternative processing paths (likely a separate registration flow or screen) rather than the standard single-service add flow.

If none of the optional service keys are found in the map, the method returns `true`, indicating the request contains only the **core service data** (usage place, customer info, payment method, etc.) and can proceed with the standard new registration flow.

The 11 guarded service categories are: usage place information, customer information, eo Light (fiber internet), eo Light Course (internet package selection), eo Light Telephone (#1), eo Light Telephone (#2), eo Light TV, payment method information, other/miscellaneous information, campaign code list, and contract service information. This design pattern acts as a **routing/dispatch filter** that separates simple fiber-only subscriptions from complex multi-service bundles.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["checkNode(ccMsg)"])
    CHECK_USEPLACE["Contains useplace_info?"]
    RET_FALSE1(["return false"])
    CHECK_KSH["Contains ksh_info?"]
    RET_FALSE2(["return false"])
    CHECK_EONET["Contains eonet?"]
    RET_FALSE3(["return false"])
    CHECK_EOTEL_COURSE["Contains eotel_course?"]
    RET_FALSE4(["return false"])
    CHECK_EOTEL_1["Contains eotel_1?"]
    RET_FALSE5(["return false"])
    CHECK_EOTEL_2["Contains eotel_2?"]
    RET_FALSE6(["return false"])
    CHECK_EOTV["Contains eotv?"]
    RET_FALSE7(["return false"])
    CHECK_PAYWAY["Contains payway_info?"]
    RET_FALSE8(["return false"])
    CHECK_ELSE["Contains else_info?"]
    RET_FALSE9(["return false"])
    CHECK_CAMPAIGN["Contains campaign_cd_list?"]
    RET_FALSE10(["return false"])
    CHECK_CONT["Contains cont_svc_list?"]
    RET_FALSE11(["return false"])
    RET_TRUE(["return true"])

    START --> CHECK_USEPLACE
    CHECK_USEPLACE -->|yes| RET_FALSE1
    CHECK_USEPLACE -->|no| CHECK_KSH
    CHECK_KSH -->|yes| RET_FALSE2
    CHECK_KSH -->|no| CHECK_EONET
    CHECK_EONET -->|yes| RET_FALSE3
    CHECK_EONET -->|no| CHECK_EOTEL_COURSE
    CHECK_EOTEL_COURSE -->|yes| RET_FALSE4
    CHECK_EOTEL_COURSE -->|no| CHECK_EOTEL_1
    CHECK_EOTEL_1 -->|yes| RET_FALSE5
    CHECK_EOTEL_1 -->|no| CHECK_EOTEL_2
    CHECK_EOTEL_2 -->|yes| RET_FALSE6
    CHECK_EOTEL_2 -->|no| CHECK_EOTV
    CHECK_EOTV -->|yes| RET_FALSE7
    CHECK_EOTV -->|no| CHECK_PAYWAY
    CHECK_PAYWAY -->|yes| RET_FALSE8
    CHECK_PAYWAY -->|no| CHECK_ELSE
    CHECK_ELSE -->|yes| RET_FALSE9
    CHECK_ELSE -->|no| CHECK_CAMPAIGN
    CHECK_CAMPAIGN -->|yes| RET_FALSE10
    CHECK_CAMPAIGN -->|no| CHECK_CONT
    CHECK_CONT -->|yes| RET_FALSE11
    CHECK_CONT -->|no| RET_TRUE
```

**CRITICAL — Constant Resolution:**

The method branches on the presence of the following keys in the `ccMsg` map. Each key maps to a string constant defined in `JFUMkmInfoAddFrontiaConstCC`:

| Constant Key | Resolved Value | Business Meaning |
|---|---|---|
| `USEPLACE_INFO` | `"useplace_info"` | Usage place information — service address/location details |
| `KSH_INFO` | `"ksh_info"` | Contractor (customer) information — personal/corporate account holder data |
| `EONET` | `"eonet"` | eo Light (fiber internet) — core internet service selection and settings |
| `EOTEL_COURSE` | `"eotel_course"` | eo Light Telephone (internet package) — bundled landline service selection |
| `EOTEL_1` | `"eotel_1"` | eo Light Telephone (#1) — first landline line configuration |
| `EOTEL_2` | `"eotel_2"` | eo Light Telephone (#2) — second landline line configuration |
| `EOTV` | `"eotv"` | eo Light TV — bundled TV service selection and set-top box details |
| `PAYWAY_INFO` | `"payway_info"` | Payment method information — credit card or bank account details |
| `ELSE_INFO` | `"else_info"` | Other/miscellaneous information — additional settings and options |
| `CAMPAIGN_CD_LIST` | `"campaign_cd_list"` | Campaign code list — promotional/discount campaign selections |
| `CONT_SVC_LIST` | `"cont_svc_list"` | Contract service information — additional contracted services (e.g., security, cloud) |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `ccMsg` | `Map<String, Object>` | The registration request payload carrying all service configuration data for a new eo Light Network (Frontier) subscription. The map contains key-value pairs representing different service sections. Its keys are inspected against 11 constant-defined strings (`useplace_info`, `ksh_info`, `eonet`, etc.). If **any** of these 11 keys are present, it means the customer has configured optional/additional services beyond the base fiber plan, and the method returns `false` to block the standard registration flow. If **none** are present, it returns `true`, allowing the simple fiber-only registration to proceed. |

**Instance fields / external state read:** None. This method is purely stateless — it reads only the passed `ccMsg` parameter and compares against static constants.

## 4. CRUD Operations / Called Services

This method performs **no CRUD operations** and calls **no service methods, CBS, or DAO methods**. It is a pure validation filter that inspects map keys.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| — | — | — | — | No database or service calls — pure in-memory key check |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CC:JFUMkmInfoAddFrontiaPreTrnCC | `JFUMkmInfoAddFrontiaPreTrnCC.execute()` -> `JFUMkmInfoAddFrontiaPreTrnCC.checkNode()` | — |

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.USEPLACE_INFO)` `[USEPLACE_INFO="useplace_info"]` (L959)

> Check if usage place information (service address) is included in the request.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.USEPLACE_INFO)` // Checks if the request contains usage place data |
| 2 | RETURN | `return false` // Block registration — usage place info present indicates composite service request |

**Block 2** — [IF] `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.KSH_INFO)` `[KSH_INFO="ksh_info"]` (L963)

> Check if contractor (customer) information is included.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.KSH_INFO)` // Checks if customer/account holder data is present |
| 2 | RETURN | `return false` // Block registration — customer info present indicates composite service request |

**Block 3** — [IF] `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.EONET)` `[EONET="eonet"]` (L967)

> Check if eo Light (fiber internet) service configuration is included.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.EONET)` // Checks if internet service settings are present |
| 2 | RETURN | `return false` // Block registration — eo Light internet config present |

**Block 4** — [IF] `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.EOTEL_COURSE)` `[EOTEL_COURSE="eotel_course"]` (L971)

> Check if eo Light Telephone (internet package) is included.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.EOTEL_COURSE)` // Checks if telephone internet package selection is present |
| 2 | RETURN | `return false` // Block registration — telephone course config present |

**Block 5** — [IF] `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.EOTEL_1)` `[EOTEL_1="eotel_1"]` (L975)

> Check if eo Light Telephone (#1) first line configuration is included.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.EOTEL_1)` // Checks if first landline configuration is present |
| 2 | RETURN | `return false` // Block registration — first telephone line present |

**Block 6** — [IF] `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.EOTEL_2)` `[EOTEL_2="eotel_2"]` (L979)

> Check if eo Light Telephone (#2) second line configuration is included.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.EOTEL_2)` // Checks if second landline configuration is present |
| 2 | RETURN | `return false` // Block registration — second telephone line present |

**Block 7** — [IF] `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.EOTV)` `[EOTV="eotv"]` (L983)

> Check if eo Light TV service configuration is included.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.EOTV)` // Checks if TV service settings are present |
| 2 | RETURN | `return false` // Block registration — TV service config present |

**Block 8** — [IF] `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.PAYWAY_INFO)` `[PAYWAY_INFO="payway_info"]` (L987)

> Check if payment method information is included.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.PAYWAY_INFO)` // Checks if payment details are present |
| 2 | RETURN | `return false` // Block registration — payment info present |

**Block 9** — [IF] `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.ELSE_INFO)` `[ELSE_INFO="else_info"]` (L991)

> Check if other/miscellaneous information is included.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.ELSE_INFO)` // Checks if additional/miscellaneous settings are present |
| 2 | RETURN | `return false` // Block registration — other info present |

**Block 10** — [IF] `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.CAMPAIGN_CD_LIST)` `[CAMPAIGN_CD_LIST="campaign_cd_list"]` (L995)

> Check if campaign code list is included.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.CAMPAIGN_CD_LIST)` // Checks if promotional campaign selections are present |
| 2 | RETURN | `return false` // Block registration — campaign data present |

**Block 11** — [IF] `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.CONT_SVC_LIST)` `[CONT_SVC_LIST="cont_svc_list"]` (L999)

> Check if contract service information is included.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ccMsg.containsKey(JFUMkmInfoAddFrontiaConstCC.CONT_SVC_LIST)` // Checks if additional contracted services are present |
| 2 | RETURN | `return false` // Block registration — contract service data present |

**Block 12** — [DEFAULT/FALL-THROUGH] (L1003)

> No optional service sections were detected. The request is a simple registration — allow it to proceed.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return ret` // ret is initialized to true — allows the standard new registration to continue |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `useplace_info` | Field | Usage place information — the service address/location where the fiber internet and associated services will be installed |
| `ksh_info` | Field | Contractor (customer) information — personal or corporate account holder data including name, address, contact details, and identification |
| `eonet` | Field | eo Light (fiber internet) — the core fiber optic internet service from K-Opticom/eo. Japanese: フォンテーラ光 |
| `eotel_course` | Field | eo Light Telephone internet package — the bundled landline telephone service package selection |
| `eotel_1` | Field | eo Light Telephone (#1) — configuration for the first landline line |
| `eotel_2` | Field | eo Light Telephone (#2) — configuration for the second landline line |
| `eotv` | Field | eo Light TV — bundled TV service with set-top box configuration. Japanese: フォンテーラテレビ |
| `payway_info` | Field | Payment method information — credit card or bank account details for service billing |
| `else_info` | Field | Other/miscellaneous information — additional settings and options not covered by other sections |
| `campaign_cd_list` | Field | Campaign code list — promotional and discount campaign selections applied to the subscription |
| `cont_svc_list` | Field | Contract service information — additional contracted services such as security packs, cloud storage, or value-added services |
| `ccMsg` | Field | Common Component message — the request payload map passed between service components in the eo customer backbone system |
| eo Light (Frontier) | Business term | K-Opticom's fiber-to-the-home (FTTH) internet service brand, sold under the "eo" brand. "Frontier" refers to the API-based subscription flow for new customers |
| FTTH | Acronym | Fiber To The Home — fiber-optic broadband connection to the customer's premises |
| CC | Acronym | Common Component — a shared service class in the eo customer backbone system that handles cross-cutting business logic |
| eo customer backbone system | Business term | The core Japanese telecommunications system (eo顧客基幹システム) that manages customer subscriptions, service orders, and billing for K-Opticom/eo services |
| ksh (顧客) | Acronym | Customer/contractor — Japanese abbreviation for "customer" (こきゃく). Used as field prefix for customer-related data |
| 登録時に内容設定されていたらエラー | Japanese comment | "Error if content is set during registration" — the method's Javadoc, explaining that presence of additional service data blocks the standard registration flow |
