@Override public JqmClient getClient(String name, Properties props, boolean cached) { if (props == null) { props = new Properties(); } if (!cached) { return new JdbcClient(props); } synchronized (clients) { if (name == null) { if (defaultClient == null) { jqmlogger.trace("creating default client"); defaultClient = new JdbcClient(props); } return defaultClient; } else { clients.putIfAbsent(name, new JdbcClient(props)); return clients.get(name); } } }
@Override public int getQueueEnabledCapacity(com.enioka.jqm.api.Queue q) { int capacity = 0; DbConn cnx = null; try { cnx = getDbSession(); ResultSet rs = cnx.runSelect("dp_select_sum_queue_capacity", q.getId()); while (rs.next()) { capacity = rs.getInt(1); } } catch (Exception e) { throw new JqmClientException("could not query queue capacity around nodes", e); } finally { closeQuietly(cnx); } return capacity; }
DbConn getDbSession() { if (db == null) { db = createFactory(); } try { return db.getConn(); } catch (Exception e) { jqmlogger.error("Could not create database session.", e); throw new JqmClientException("Could not create database session", e); } }
@Override public int enqueueFromHistory(int jobIdToCopy) { DbConn cnx = null; try { cnx = getDbSession(); return enqueue(getJobRequest(jobIdToCopy, cnx)); } catch (NoResultException e) { throw new JqmInvalidRequestException("No job for this ID in the history"); } finally { closeQuietly(cnx); } }
@Override public List<InputStream> getJobDeliverablesContent(int idJob) { DbConn cnx = null; ArrayList<InputStream> streams = new ArrayList<>(); try { cnx = getDbSession(); for (Deliverable del : Deliverable.select(cnx, "deliverable_select_all_for_ji", idJob)) { streams.add(getDeliverableContent(del)); } } catch (Exception e) { throw new JqmClientException("could not retrieve file streams", e); } finally { closeQuietly(cnx); } return streams; }
@Override public List<com.enioka.jqm.api.Queue> getQueues() { List<com.enioka.jqm.api.Queue> res = new ArrayList<>(); DbConn cnx = null; com.enioka.jqm.api.Queue tmp = null; try { cnx = getDbSession(); for (Queue q : Queue.select(cnx, "q_select_all")) { tmp = getQueue(q); res.add(tmp); } return res; } catch (Exception e) { throw new JqmClientException("could not query queues", e); } finally { closeQuietly(cnx); } }
cnx = getDbSession(); Map<Integer, com.enioka.jqm.api.JobInstance> res = new LinkedHashMap<>(); wh += getIntPredicate("ji.ID", query.getJobInstanceId(), prms); wh += getIntPredicate("ji.PARENT", query.getParentId(), prms); wh += getStringPredicate("ji.APPLICATION", query.getInstanceApplication(), prms); wh += getStringPredicate("ji.MODULE", query.getInstanceModule(), prms); wh += getStringPredicate("ji.KEYWORD1", query.getInstanceKeyword1(), prms); wh += getStringPredicate("ji.KEYWORD2", query.getInstanceKeyword2(), prms); wh += getStringPredicate("ji.KEYWORD3", query.getInstanceKeyword3(), prms); wh += getStringPredicate("ji.USERNAME", query.getUser(), prms); wh += getStringPredicate("ji.SESSION_KEY", query.getSessionId(), prms); wh += getStatusPredicate("ji.STATUS", query.getStatus(), prms); wh += getStringPredicate("jd.JD_KEY", query.getApplicationName(), prms); wh += getStringPredicate("jd.APPLICATION", query.getJobDefApplication(), prms); wh += getStringPredicate("jd.MODULE", query.getJobDefModule(), prms); wh += getStringPredicate("jd.KEYWORD1", query.getJobDefKeyword1(), prms); wh += getStringPredicate("jd.KEYWORD2", query.getJobDefKeyword2(), prms); wh += getStringPredicate("jd.KEYWORD3", query.getJobDefKeyword3(), prms); wh += getStringPredicate("n.NAME", query.getNodeName(), prms); wh += getStringPredicate("q.NAME", query.getQueueName(), prms); wh += getIntPredicate("q.ID", query.getQueueId() == null ? null : query.getQueueId(), prms); wh += getCalendarPredicate("ji.DATE_ENQUEUE", query.getEnqueuedAfter(), ">=", prms); wh += getCalendarPredicate("ji.DATE_ENQUEUE", query.getEnqueuedBefore(), "<=", prms); wh += getCalendarPredicate("ji.DATE_START", query.getBeganRunningAfter(), ">=", prms);
InputStream getEngineLog(String nodeName, int latest) DbConn cnx = getDbSession(); URL url = null; url = new URL(getFileProtocol(cnx) + dns + ":" + port + "/ws/simple/enginelog?latest=" + latest); jqmlogger.trace("Will invoke engine log URL: " + url.toString()); closeQuietly(cnx); return getFile(url.toString());
cnx = getDbSession(); dbr = JobDef.select(cnx, queryName, (Object[]) args); for (com.enioka.jqm.api.Queue q : getQueues()) tmp.addSchedule(getSchedule(s, queues)); closeQuietly(cnx);
try cnx = getDbSession(); try protocol = getFileProtocol(cnx); return protocol + host; closeQuietly(cnx);
DbConn cnx = getDbSession(); int res = createSchedule(runRequest, cnx); cnx.commit(); cnx.close(); closeQuietly(cnx); throw new JqmInvalidRequestException("There are multiple Job definition named " + runRequest.getApplicationName()); closeQuietly(cnx); throw new JqmInvalidRequestException("no job definition named " + runRequest.getApplicationName()); Integer existing = highlanderMode(jobDef, cnx); if (existing != null) closeQuietly(cnx); jqmlogger.trace("JI won't actually be enqueued because a job in highlander mode is currently submitted: " + existing); return existing; closeQuietly(cnx);
cancelJob(idJob); return; try cnx = getDbSession(); closeQuietly(cnx);
cnx = getDbSession(); ResultSet rs = cnx.runSelect("history_select_reenqueue_by_id", idJob); int res = enqueue(jr); cnx.runUpdate("history_delete_by_id", idJob); cnx.commit(); closeQuietly(cnx);
@Override public int enqueue(String applicationName, String userName) { return enqueue(new JobRequest(applicationName, userName)); }
@Override public InputStream getDeliverableContent(com.enioka.jqm.api.Deliverable d) { return getDeliverableContent(d.getId()); }
private int createSchedule(JobRequest jr, DbConn cnx) { // The job def JobDef jobDef = null; try { jobDef = JobDef.select_key(cnx, jr.getApplicationName()); } catch (NonUniqueResultException ex) { jqmlogger.error("There are multiple Job definition named " + jr.getApplicationName() + ". Inconsistent configuration."); closeQuietly(cnx); throw new JqmInvalidRequestException("There are multiple Job definition named " + jr.getApplicationName()); } catch (NoResultException ex) { jqmlogger.error("Job definition named " + jr.getApplicationName() + " does not exist"); closeQuietly(cnx); throw new JqmInvalidRequestException("no job definition named " + jr.getApplicationName()); } // The queue Integer queueId = null; // No override = use JD queue. if (jr.getQueueName() != null) { // use requested key if given. queueId = cnx.runSelectSingle("q_select_by_key", 1, Integer.class, jr.getQueueName()); } // The new schedule return ScheduledJob.create(cnx, jr.getRecurrence(), jobDef.getId(), queueId, jr.getPriority(), jr.getParameters()); }
@Override public InputStream getDeliverableContent(int delId) { DbConn cnx = null; Deliverable deliverable = null; try { cnx = getDbSession(); List<Deliverable> dd = Deliverable.select(cnx, "deliverable_select_by_id", delId); if (dd.size() == 0) { throw new JqmClientException("There is no deliverable with the given ID - check your ID"); } deliverable = dd.get(0); } catch (Exception e) { throw new JqmInvalidRequestException("Could not get find deliverable description inside DB - your ID may be wrong", e); } finally { closeQuietly(cnx); } return getDeliverableContent(deliverable); }
private InputStream getFile(String url) DbConn cnx = getDbSession(); File file = null; FileOutputStream fos = null; if (getFileProtocol(cnx).equals("https://")) closeQuietly(cnx); closeQuietly(fos); closeQuietly(rs); closeQuietly(cl);
try cnx = getDbSession(); ResultSet rs = cnx.runSelect("dp_select_enabled_for_queue", q.getId()); closeQuietly(cnx);