Skip to content

Data Masking & Generation Execution Logic #9

@MaximumTrainer

Description

@MaximumTrainer

Gap

Generator types are defined as enums (NAME, EMAIL, PHONE, ADDRESS, SSN, CREDIT_CARD, DATE, UUID, CONSTANT, NULL, CUSTOM) but there is no execution logic that transforms data.
No GeneratorService, GeneratorExecutor, or equivalent class exists.

JobService fetches generators from the database but never applies them:

val generators = columnGeneratorRepository.findByTableConfigurationId(tableConfig.id)
val data = sourceConnector.fetchData(tableConfig.tableName, ...)
addLog(jobId, "Masking ${data.size} rows ... with ${generators.size} generator(s)", LogLevel.INFO)
// ← no actual masking/generation happens

Affected files:

  • backend/src/main/kotlin/com/opendatamask/model/ColumnGenerator.kt
  • backend/src/main/kotlin/com/opendatamask/service/JobService.kt

Required Work

  • Create a GeneratorService (or GeneratorExecutor) that applies each GeneratorType to column values.
  • Integrate a faker / data-generation library (e.g. datafaker) for realistic synthetic data.
  • Implement each generator type: NAME, EMAIL, PHONE, ADDRESS, SSN, CREDIT_CARD, DATE, UUID, CONSTANT, NULL, CUSTOM.
  • Support generatorParams (JSON configuration per column) for customization.
  • Wire GeneratorService into JobService.processTable() so masked/generated rows are produced before writing to the destination.

Metadata

Metadata

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions