@Override public Date getRequisitionDate(final String foreignSource) { if (m_pendingRequisitions.containsKey(foreignSource)) { return m_pendingRequisitions.get(foreignSource).getDate(); } return m_repository.getRequisitionDate(foreignSource); }
URL createSnapshot() throws MalformedURLException { flush(); final ForeignSourceRepository pendingForeignSourceRepository = getPendingForeignSourceRepository(); final String foreignSource = getForeignSource(); LOG.debug("createSnapshot(): foreignSource = {}", foreignSource); final Requisition pending = pendingForeignSourceRepository.getRequisition(foreignSource); LOG.debug("createSnapshot(): pending = {}", pending); final Requisition deployed = getDeployedForeignSourceRepository().getRequisition(foreignSource); LOG.debug("createSnapshot(): deployed = {}", deployed); final URL activeUrl; final XMLGregorianCalendar pendingDateStamp = pending == null? null : pending.getDateStamp(); if (pending == null || (deployed != null && deployed.getDateStamp().compare(pendingDateStamp) > -1)) { activeUrl = getDeployedForeignSourceRepository().getRequisitionURL(foreignSource); } else { final Date pendingDate = pending.getDate(); final File snapshot = RequisitionFileUtils.createSnapshot(pendingForeignSourceRepository, foreignSource, pendingDate); activeUrl = snapshot.toURI().toURL(); } return activeUrl; }
/** {@inheritDoc} */ @Override public final Date getRequisitionDate(final String foreignSource) throws ForeignSourceRepositoryException { m_readLock.lock(); try { final Requisition requisition = getRequisition(foreignSource); if (requisition == null) { return null; } return requisition.getDate(); } finally { m_readLock.unlock(); } }
URL createSnapshot() throws MalformedURLException { flush(); final ForeignSourceRepository pendingForeignSourceRepository = getPendingForeignSourceRepository(); final String foreignSource = getForeignSource(); LOG.debug("createSnapshot(): foreignSource = {}", foreignSource); final Requisition pending = pendingForeignSourceRepository.getRequisition(foreignSource); LOG.debug("createSnapshot(): pending = {}", pending); final Requisition deployed = getDeployedForeignSourceRepository().getRequisition(foreignSource); LOG.debug("createSnapshot(): deployed = {}", deployed); final URL activeUrl; final XMLGregorianCalendar pendingDateStamp = pending == null? null : pending.getDateStamp(); if (pending == null || (deployed != null && deployed.getDateStamp().compare(pendingDateStamp) > -1)) { activeUrl = getDeployedForeignSourceRepository().getRequisitionURL(foreignSource); } else { final Date pendingDate = pending.getDate(); final File snapshot = RequisitionFileUtils.createSnapshot(pendingForeignSourceRepository, foreignSource, pendingDate); activeUrl = snapshot.toURI().toURL(); } return activeUrl; }
@Override public Date getRequisitionDate(final String foreignSource) { final Requisition requisition = m_requisitions.get(foreignSource); return requisition == null? null : requisition.getDate(); }
public Requisition getActiveRequisition(final boolean createIfMissing) { if (m_pending != null) { return m_pending; } final Requisition pending = RequisitionFileUtils.getLatestPendingOrSnapshotRequisition(getPendingForeignSourceRepository(), m_foreignSource); final Requisition deployed = getDeployedForeignSourceRepository().getRequisition(m_foreignSource); if (pending == null && deployed == null && createIfMissing) { return new Requisition(m_foreignSource); } else if (pending == null) { return deployed; } else if (deployed == null) { return pending; } else if (deployed.getDate().after(pending.getDate())) { // deployed is newer than pending return deployed; } return pending; }
public Requisition getActiveRequisition(final boolean createIfMissing) { if (m_pending != null) { return m_pending; } final Requisition pending = RequisitionFileUtils.getLatestPendingOrSnapshotRequisition(getPendingForeignSourceRepository(), m_foreignSource); final Requisition deployed = getDeployedForeignSourceRepository().getRequisition(m_foreignSource); if (pending == null && deployed == null && createIfMissing) { return new Requisition(m_foreignSource); } else if (pending == null) { return deployed; } else if (deployed == null) { return pending; } else if (deployed.getDate().after(pending.getDate())) { // deployed is newer than pending return deployed; } return pending; }
public static Requisition getLatestPendingOrSnapshotRequisition(final ForeignSourceRepository foreignSourceRepository, final String foreignSource) { Requisition newest = foreignSourceRepository.getRequisition(foreignSource); for (final File snapshotFile : findSnapshots(foreignSourceRepository, foreignSource)) { if (newest == null || isNewer(snapshotFile, newest.getDate())) { newest = JaxbUtils.unmarshal(Requisition.class, snapshotFile); newest.setResource(new FileSystemResource(snapshotFile)); } } return newest; }
protected String getSummaryForRequisition(final File file) { final Requisition requisition = JaxbUtils.unmarshal(Requisition.class, new FileSystemResource(file)); final StringBuilder sb = new StringBuilder(); if (requisition.getNodeCount() > 0) { sb.append("("); final Iterator<RequisitionNode> nodeIterator = requisition.getNodes().iterator(); while (nodeIterator.hasNext()) { sb.append(nodeIterator.next().getNodeLabel()); if (nodeIterator.hasNext()) sb.append(", "); } sb.append(")"); } final String requisitionSummary = file.getPath() + sb.toString() + ": " + requisition.getDate().getTime(); return requisitionSummary; }
protected URL createSnapshot(final String foreignSource) throws MalformedURLException { System.err.println("--- creating snapshot for " + foreignSource + " ---"); Requisition pending = m_pending.getRequisition(foreignSource); Requisition deployed = m_active.getRequisition(foreignSource); final Date deployedDate = deployed == null? null : deployed.getDate(); final Date pendingDate = pending == null? null : pending.getDate(); if (deployedDate == null) return RequisitionFileUtils.createSnapshot(m_pending, foreignSource, pending.getDate()).toURI().toURL(); if (pendingDate == null) return m_active.getRequisitionURL(foreignSource); final URL url; if (deployedDate.before(pendingDate)) { url = RequisitionFileUtils.createSnapshot(m_pending, foreignSource, pendingDate).toURI().toURL(); } else { url = m_active.getRequisitionURL(foreignSource); } System.err.println("deployedDate = " + deployedDate); System.err.println("pendingDate = " + pendingDate); System.err.println("url = " + url); return url; }
final String foreignSource = pendingReq.getForeignSource(); pendingReq = m_pending.getRequisition(foreignSource); final File pendingSnapshotA = RequisitionFileUtils.createSnapshot(m_pending, foreignSource, pendingReq.getDate()); m_pending.flush(); final File pendingSnapshotB = RequisitionFileUtils.createSnapshot(m_pending, foreignSource, pendingReq.getDate()); assertEquals(deployedRequisition.getDate().getTime(), bReq.getDate().getTime());
@Test public void simpleSnapshotTest() throws URISyntaxException { Requisition pendingReq = new Requisition("test"); pendingReq.putNode(createNode("1")); m_pending.save(pendingReq); m_pending.flush(); pendingReq = m_pending.getRequisition(pendingReq.getForeignSource()); final File pendingSnapshot = RequisitionFileUtils.createSnapshot(m_pending, pendingReq.getForeignSource(), pendingReq.getDate()); m_repository.importResourceRequisition(new FileSystemResource(pendingSnapshot)); assertFalse(pendingSnapshot.exists()); final URL pendingUrl = m_pending.getRequisitionURL(pendingReq.getForeignSource()); final File pendingFile = new File(pendingUrl.toURI()); assertFalse(pendingFile.exists()); }