SHOW:
|
|
- or go back to the newest paste.
| 1 | case class JobResolved(jobId: Int, | |
| 2 | jobType: JobTypeResolved, | |
| 3 | fireTime: DateTime, | |
| 4 | tempFiles: Seq[String], | |
| 5 | status: Status, | |
| 6 | - | retry: Int) |
| 6 | + | retry: Int) |
| 7 | ||
| 8 | ||
| 9 | def selectAllWithDeps(): scala.List[model.JobTypeDeps] = {
| |
| 10 | db.withSession {
| |
| 11 | implicit session: Session => | |
| 12 | session.withTransaction {
| |
| 13 | val query = for {
| |
| 14 | jobType <- schema.JobTypes if jobType.isDeleted === ACTIVE.value | |
| 15 | template <- schema.JobTemplates if template.jtmId === jobType.jtmId && template.isDeleted === ACTIVE.value | |
| 16 | source <- schema.DataSources if source.srcId === template.srcId && source.isDeleted === ACTIVE.value | |
| 17 | dest <- schema.DataDestinations if dest.destId === jobType.destId && dest.isDeleted === ACTIVE.value | |
| 18 | } yield (jobType, template, source, dest) | |
| 19 | val f = (model.JobTypeDeps.apply _).tupled | |
| 20 | query.list.map(t => f(t)) | |
| 21 | } | |
| 22 | } | |
| 23 | } | |
| 24 | ||
| 25 | case class JobTypeDeps(jobType: JobType, | |
| 26 | jobTemplate: JobTemplate, | |
| 27 | source: DataSource, | |
| 28 | destination: DataDestination) | |
| 29 | ||
| 30 | def resolve(deps: JobTypeDeps): Try[JobTypeResolved] = {
| |
| 31 | resolve(deps.jobType, deps.jobTemplate, deps.source, deps.destination) | |
| 32 | } | |
| 33 | ||
| 34 | /** | |
| 35 | * The function merges job template and job type and | |
| 36 | * adds source and destination to the resolved object | |
| 37 | */ | |
| 38 | def resolve(jobType: JobType, | |
| 39 | jobTemplate: JobTemplate, | |
| 40 | source: DataSource, | |
| 41 | destination: DataDestination): Try[JobTypeResolved] = {
| |
| 42 | // this mutable object, that holds all errors after the processing | |
| 43 | val errors = new mutable.StringBuilder() | |
| 44 | // ... | |
| 45 | // inner functions related to overriding logic | |
| 46 | // ... | |
| 47 | ||
| 48 | val src = if (jobTemplate.srcId == get(source.srcId, "DataSource.srcId")) {
| |
| 49 | source | |
| 50 | } else {
| |
| 51 | errors.append(s"JobTemplate.srcId refers to wrong 'source'.\n") | |
| 52 | null: DataSource | |
| 53 | } | |
| 54 | ||
| 55 | val dest = if (jobType.destId == get(destination.destId, "DataDestination.destId")) {
| |
| 56 | destination | |
| 57 | } else {
| |
| 58 | errors.append(s"JobType.destId refers to wrong 'destination'.\n") | |
| 59 | null: DataDestination | |
| 60 | } | |
| 61 | ||
| 62 | val result = new JobTypeResolved( | |
| 63 | jtyId = get(jobType.jtyId, "JobType.jtyId"), | |
| 64 | name = jobType.name.getOrElse(jobTemplate.name), | |
| 65 | source = src, | |
| 66 | destination = dest, | |
| 67 | ... | |
| 68 | ) | |
| 69 | if (errors.isEmpty) Success(result) | |
| 70 | else Failure(new NoSuchElementException(errors.toString())) | |
| 71 | } |