v1: executing-plans 模式生成,54 文件 1320 行 Python
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import yaml
|
||||
from dataclasses import dataclass, field
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
@dataclass
|
||||
class FieldMapping:
|
||||
cobol_field: str
|
||||
java_field: str
|
||||
field_type: str = "string"
|
||||
precision: int = 0
|
||||
trim: bool = False
|
||||
format: str = ""
|
||||
init_strategy: str = "auto"
|
||||
|
||||
|
||||
@dataclass
|
||||
class MappingConfig:
|
||||
program: str = ""
|
||||
dialect: str = "ibm"
|
||||
field_mappings: list[FieldMapping] = field(default_factory=list)
|
||||
redefines_strategy: dict = field(default_factory=dict)
|
||||
|
||||
@classmethod
|
||||
def from_yaml(cls, path: str) -> "MappingConfig":
|
||||
data = yaml.safe_load(Path(path).read_text())
|
||||
c = cls()
|
||||
c.program = data.get("program", "")
|
||||
c.dialect = data.get("dialect", "ibm")
|
||||
for fm in data.get("field_mapping", []):
|
||||
c.field_mappings.append(FieldMapping(**fm))
|
||||
c.redefines_strategy = data.get("redefines_strategy", {})
|
||||
return c
|
||||
|
||||
def get_java_field(self, cobol_name: str) -> str:
|
||||
for m in self.field_mappings:
|
||||
if m.cobol_field == cobol_name:
|
||||
return m.java_field
|
||||
return cobol_name
|
||||
|
||||
|
||||
_m = FieldMapping(cobol_field="BR-AMT", java_field="billAmount", field_type="decimal", precision=2)
|
||||
assert _m.cobol_field == "BR-AMT"
|
||||
assert _m.java_field == "billAmount"
|
||||
assert _m.precision == 2
|
||||
Reference in New Issue
Block a user