@Test public void testDeleteArtifact() throws Exception { String artifactFileName = "s-ramp-press-release.pdf"; InputStream pdf = this.getClass().getResourceAsStream("/sample-files/core/" + artifactFileName); Document document = new Document(); document.setName(artifactFileName); document.setArtifactType(BaseArtifactEnum.DOCUMENT); // Add an artifact BaseArtifactType artifact = persistenceManager.persistArtifact(document, pdf); Assert.assertNotNull(artifact); Assert.assertEquals(Document.class, artifact.getClass()); Assert.assertEquals(new Long(18873l), ((DocumentArtifactType) artifact).getContentSize()); log.info( "persisted s-ramp-press-release.pdf to JCR, returned artifact uuid=" + artifact.getUuid()); // Now delete that artifact ArtifactType at = ArtifactType.valueOf(artifact); persistenceManager.deleteArtifact(document.getUuid(), at); // Now make sure we can't load it back up BaseArtifactType deleted = persistenceManager.getArtifact(document.getUuid(), at); Assert.assertNull(deleted); SrampQuery query = queryManager.createQuery("/s-ramp[@uuid = ?]"); query.setString(document.getUuid()); ArtifactSet artifactSet = query.executeQuery(); Assert.assertEquals(0, artifactSet.size()); }
private ArtifactSet query(List<String> criteria, List<Object> parameters) throws SrampAtomException { ArtifactSet artifactSet = null; /* Query */ StringBuilder queryBuilder = new StringBuilder(); // Initial query queryBuilder.append("/s-ramp"); // $NON-NLS-1$ // Now create the query predicate from the generated criteria if (criteria.size() > 0) { queryBuilder.append("["); // $NON-NLS-1$ queryBuilder.append(StringUtils.join(criteria, " and ")); // $NON-NLS-1$ queryBuilder.append("]"); // $NON-NLS-1$ } try { QueryManager queryManager = QueryManagerFactory.newInstance(); SrampQuery srampQuery = queryManager.createQuery( queryBuilder.toString(), "lastModifiedTimestamp", false); // $NON-NLS-1$ for (Object parameter : parameters) { if (parameter instanceof String) { srampQuery.setString((String) parameter); } else if (parameter instanceof Date) { srampQuery.setDate((Date) parameter); } } artifactSet = srampQuery.executeQuery(); } catch (Throwable e) { logger.error( Messages.i18n.format("maven.resource.query.error", queryBuilder.toString()), e); //$NON-NLS-1$ throw new SrampAtomException(e); } return artifactSet; }
@Test public void testDerivedRelationshipQueries() throws Exception { createOntology(); addDocument("no-classifications"); // $NON-NLS-1$ addDocument("one-classification: china", "China"); // $NON-NLS-1$ //$NON-NLS-2$ addDocument("one-classification: japan", "Japan"); // $NON-NLS-1$ //$NON-NLS-2$ addDocument("one-classification: germany", "Germany"); // $NON-NLS-1$ //$NON-NLS-2$ // Verify that both docs are available SrampQuery query = queryManager.createQuery("/s-ramp/core/Document"); // $NON-NLS-1$ ArtifactSet artifactSet = query.executeQuery(); Assert.assertNotNull(artifactSet); Assert.assertEquals(4, artifactSet.size()); // Make sure there's only one with the given name query = queryManager.createQuery("/s-ramp/core/Document[@name = ?]"); // $NON-NLS-1$ query.setString("no-classifications"); // $NON-NLS-1$ artifactSet = query.executeQuery(); Assert.assertNotNull(artifactSet); Assert.assertEquals(1, artifactSet.size()); // Should get just the one classified by China query = queryManager.createQuery( "/s-ramp/core/Document[s-ramp:exactlyClassifiedByAllOf(., 'China')]"); //$NON-NLS-1$ artifactSet = query.executeQuery(); Assert.assertNotNull(artifactSet); Assert.assertEquals(1, artifactSet.size()); // Should get zero artifacts query = queryManager.createQuery( "/s-ramp/core/Document[s-ramp:exactlyClassifiedByAllOf(., 'Asia')]"); //$NON-NLS-1$ artifactSet = query.executeQuery(); Assert.assertNotNull(artifactSet); Assert.assertEquals(0, artifactSet.size()); // Should get just the one classified by Germany query = queryManager.createQuery( "/s-ramp/core/Document[s-ramp:exactlyClassifiedByAllOf(., 'Germany')]"); //$NON-NLS-1$ artifactSet = query.executeQuery(); Assert.assertNotNull(artifactSet); Assert.assertEquals(1, artifactSet.size()); // Should get zero artifacts query = queryManager.createQuery( "/s-ramp/core/Document[s-ramp:exactlyClassifiedByAllOf(., 'China', 'Germany')]"); //$NON-NLS-1$ artifactSet = query.executeQuery(); Assert.assertNotNull(artifactSet); Assert.assertEquals(0, artifactSet.size()); // Should get all classified artifacts query = queryManager.createQuery( "/s-ramp/core/Document[s-ramp:classifiedByAllOf(., 'World')]"); //$NON-NLS-1$ artifactSet = query.executeQuery(); Assert.assertNotNull(artifactSet); Assert.assertEquals(3, artifactSet.size()); // Should get two artifacts - japan and china query = queryManager.createQuery( "/s-ramp/core/Document[s-ramp:classifiedByAllOf(., 'Asia')]"); //$NON-NLS-1$ artifactSet = query.executeQuery(); Assert.assertNotNull(artifactSet); Assert.assertEquals(2, artifactSet.size()); // Should get two artifacts - japan and china query = queryManager.createQuery( "/s-ramp/core/Document[s-ramp:classifiedByAnyOf(., 'Japan', 'China')]"); //$NON-NLS-1$ artifactSet = query.executeQuery(); Assert.assertNotNull(artifactSet); Assert.assertEquals(2, artifactSet.size()); }