case class JobResolved(jobId: Int,
jobType: JobTypeResolved,
fireTime: DateTime,
tempFiles: Seq[String],
status: Status,
retry: Int)
def selectAllWithDeps(): scala.List[model.JobTypeDeps] = {
db.withSession {
implicit session: Session =>
session.withTransaction {
val query = for {
jobType <- schema.JobTypes if jobType.isDeleted === ACTIVE.value
template <- schema.JobTemplates if template.jtmId === jobType.jtmId && template.isDeleted === ACTIVE.value
source <- schema.DataSources if source.srcId === template.srcId && source.isDeleted === ACTIVE.value
dest <- schema.DataDestinations if dest.destId === jobType.destId && dest.isDeleted === ACTIVE.value
} yield (jobType, template, source, dest)
val f = (model.JobTypeDeps.apply _).tupled
query.list.map(t => f(t))
}
}
}
case class JobTypeDeps(jobType: JobType,
jobTemplate: JobTemplate,
source: DataSource,
destination: DataDestination)
def resolve(deps: JobTypeDeps): Try[JobTypeResolved] = {
resolve(deps.jobType, deps.jobTemplate, deps.source, deps.destination)
}
/**
* The function merges job template and job type and
* adds source and destination to the resolved object
*/
def resolve(jobType: JobType,
jobTemplate: JobTemplate,
source: DataSource,
destination: DataDestination): Try[JobTypeResolved] = {
// this mutable object, that holds all errors after the processing
val errors = new mutable.StringBuilder()
// ...
// inner functions related to overriding logic
// ...
val src = if (jobTemplate.srcId == get(source.srcId, "DataSource.srcId")) {
source
} else {
errors.append(s"JobTemplate.srcId refers to wrong 'source'.\n")
null: DataSource
}
val dest = if (jobType.destId == get(destination.destId, "DataDestination.destId")) {
destination
} else {
errors.append(s"JobType.destId refers to wrong 'destination'.\n")
null: DataDestination
}
val result = new JobTypeResolved(
jtyId = get(jobType.jtyId, "JobType.jtyId"),
name = jobType.name.getOrElse(jobTemplate.name),
source = src,
destination = dest,
...
)
if (errors.isEmpty) Success(result)
else Failure(new NoSuchElementException(errors.toString()))
}
Comments
0 B
|0 👍
/0 👎
0 B
|👍
/👎