1 package com.trendmicro.grid.acl.ds;
2
3 import com.trendmicro.grid.acl.ds.datatypes.SharedJob;
4 import com.trendmicro.grid.acl.ds.datatypes.SharedJobDetails;
5 import com.trendmicro.grid.acl.l0.datatypes.Job;
6 import com.trendmicro.grid.acl.l0.datatypes.Source;
7 import com.trendmicro.grid.acl.l0.datatypes.UUIDListPage;
8
9 import java.util.Collection;
10 import java.util.Date;
11 import java.util.List;
12 import java.util.UUID;
13
14 /**
15 * Defines a repository that manages the processing Jobs inside the GRID.
16 *
17 * @author juergen_kellerer, 2010-05-07
18 * @version 1.0
19 */
20 public interface JobRepository extends Repository {
21
22 /**
23 * Prepares a new processing job and returns the job's GUID.
24 *
25 * @return The GUID of the job.
26 */
27 UUID createJob();
28
29 /**
30 * Prepares a new processing job and returns the job's GUID.
31 *
32 * @param parentJobId The id of the parent job to bind this job to.
33 * @return The GUID of the job.
34 */
35 UUID createSubJob(UUID parentJobId);
36
37 /**
38 * Adds sources to a single processing job.
39 *
40 * @param jobId the id of the job to add the source to.
41 * @param sources The sources to add.
42 */
43 void addJobSources(UUID jobId, List<Source> sources);
44
45 /**
46 * Adds sources to a single processing job.
47 *
48 * @param job the job to add the source to.
49 * @param sources The sources to add.
50 */
51 void addJobSources(Job job, List<Source> sources);
52
53 /**
54 * Updates the given job inside the persistent store (= the database)
55 *
56 * @param job the job to update.
57 * @throws IllegalArgumentException in case of the given value is null or doesn't reference an existing job.
58 */
59 void updateJob(Job job);
60
61 /**
62 * Finalizes the specified job (sets it to the final state) or removes the job if it hasn't been started.
63 *
64 * @param jobId The GUID of the job to finalize.
65 * @param finalJobState the final state of the job or 'null' to finalize / remove a job that hasn't been started.
66 * @throws IllegalArgumentException in case of the final job state is set and not in {@link Job#FINAL_STATES}.
67 */
68 void finalizeJob(UUID jobId, Job.State finalJobState) throws IllegalArgumentException;
69
70 /**
71 * Finalizes the specified job (sets it to the final state) or removes the job if it hasn't been started.
72 *
73 * @param job The job to finalize.
74 * @param finalJobState the final state of the job or 'null' to finalize / remove a job that hasn't been started.
75 * @throws IllegalArgumentException in case of the final job state is set and not in {@link Job#FINAL_STATES}.
76 */
77 void finalizeJob(Job job, Job.State finalJobState) throws IllegalArgumentException;
78
79 /**
80 * Returns a paged list of running jobs.
81 *
82 * @param jobState The state of the jobs to list.
83 * @param updatedFromDate The inclusive lower bound for the last-update date value
84 * or 'null' if there is no lower bound.
85 * @param updatedToDate The exclusive upper bound for the last-update date value
86 * or 'null' if there is no upper bound.
87 * @param pageNumber The page number of the list page to return (0 is first page).
88 * @return A single list page for the given page number or 'null' if no jobs are running or the
89 * pageNumber is out of range.
90 */
91 UUIDListPage getJobsByStateInRange(Job.State jobState, Date updatedFromDate, Date updatedToDate, int pageNumber);
92
93 /**
94 * Returns the state of the given job.
95 *
96 * @param jobId the id of the job to validate the state of.
97 * @return the state of the given job or 'null' no job exists for the given id.
98 */
99 Job.State getJobState(UUID jobId);
100
101 /**
102 * Returns the read & writable information on the jobs, idenified by its ids.
103 *
104 * @param jobIds The GUIDs of the jobs to retur.
105 * @return the jobs, idenified by its ids.
106 * @ In case of the current user is not
107 * authenticated or doesn't have the right to access the service.
108 */
109 Collection<SharedJob> getJobs(Collection<UUID> jobIds);
110
111 /**
112 * Returns the detailed information on a job, idenified by its id.
113 *
114 * @param jobId The GUID of the job to return the details for.
115 * @return the details on a job, idenified by its id.
116 * @ In case of the current user is not
117 * authenticated or doesn't have the right to access the service.
118 */
119 SharedJobDetails getJobDetails(UUID jobId);
120 }