@Test public void test() throws Exception { DocumentModel doc = new DocumentModelImpl("/", "doc", "ComplexDoc"); List<Map<String, Object>> vignettes = new ArrayList<Map<String, Object>>(); Map<String, Object> vignette = new HashMap<String, Object>(); vignette.put("width", Long.valueOf(0)); vignette.put("height", Long.valueOf(0)); Blob blob1 = Blobs.createBlob("foo1 bar1"); blob1.setFilename("file1.txt"); vignette.put("content", blob1); vignettes.add(vignette); vignette = new HashMap<String, Object>(); vignette.put("width", Long.valueOf(0)); vignette.put("height", Long.valueOf(0)); Blob blob2 = Blobs.createBlob("foo2 bar2"); blob2.setFilename("file2.txt"); vignette.put("content", blob2); vignettes.add(vignette); Map<String, Object> attachedFile = new HashMap<String, Object>(); attachedFile.put("name", "some name"); attachedFile.put("vignettes", vignettes); doc.setPropertyValue("cmpf:attachedFile", (Serializable) attachedFile); Blob blob3 = Blobs.createBlob("foo3 bar3"); doc.setProperty("file", "content", blob3); BlobsExtractor extractor = new BlobsExtractor(); List<Blob> blobs = extractor.getBlobs(doc); assertEquals(3, blobs.size()); assertTrue(blobs.contains(blob1)); assertTrue(blobs.contains(blob2)); assertTrue(blobs.contains(blob3)); }
@Test public void testWithRepositoryConfiguration() throws Exception { DocumentModel doc = new DocumentModelImpl("/", "doc", "ComplexDoc"); List<Map<String, Object>> vignettes = new ArrayList<Map<String, Object>>(); Map<String, Object> vignette = new HashMap<String, Object>(); vignette.put("width", Long.valueOf(0)); vignette.put("height", Long.valueOf(0)); Blob blob1 = Blobs.createBlob("foo1 bar1"); blob1.setFilename("file1.txt"); vignette.put("content", blob1); vignettes.add(vignette); vignette = new HashMap<String, Object>(); vignette.put("width", Long.valueOf(0)); vignette.put("height", Long.valueOf(0)); Blob blob2 = Blobs.createBlob("foo2 bar2"); blob2.setFilename("file2.txt"); vignette.put("content", blob2); vignettes.add(vignette); Map<String, Object> attachedFile = new HashMap<String, Object>(); attachedFile.put("name", "some name"); attachedFile.put("vignettes", vignettes); doc.setPropertyValue("cmpf:attachedFile", (Serializable) attachedFile); Blob blob3 = Blobs.createBlob("foo3 bar3"); doc.setProperty("file", "content", blob3); BlobsExtractor extractor = new BlobsExtractor(); List<Blob> blobs; /* * First configuration : only a simple property <index> <field>dc:title</field> </index> */ extractor.setExtractorProperties(null, null, false); blobs = extractor.getBlobs(doc); assertEquals(0, blobs.size()); /* * Second configuration : only blobs property <index> <fieldType>blob</fieldType> </index> */ extractor.setExtractorProperties(null, null, true); blobs = extractor.getBlobs(doc); assertEquals(3, blobs.size()); assertTrue(blobs.contains(blob1)); assertTrue(blobs.contains(blob2)); assertTrue(blobs.contains(blob3)); /* * Third configuration : only a blob property whose schema has a prefix <index> * <field>cmpf:attachedFile/vignettes//content/data</field> </index> */ Set<String> pathProps = new HashSet<String>(); pathProps.add("cmpf:attachedFile/vignettes/*/content/data"); extractor.setExtractorProperties(pathProps, null, false); blobs = extractor.getBlobs(doc); assertEquals(2, blobs.size()); assertTrue(blobs.contains(blob1)); assertTrue(blobs.contains(blob2)); /* * Fourth configuration : only the blob of file whose schema doesn't have a prefix <index> * <field>content/data</field> </index> */ pathProps = new HashSet<String>(); pathProps.add("content/data"); extractor.setExtractorProperties(pathProps, null, false); blobs = extractor.getBlobs(doc); assertEquals(1, blobs.size()); assertTrue(blobs.contains(blob3)); /* * Fifth configuration : all blobs minus some blobs <index> <fieldType>blob</fieldType> * <excludeField>content/data</excludeField> </index> */ pathProps = new HashSet<String>(); pathProps.add("content/data"); extractor.setExtractorProperties(null, pathProps, true); blobs = extractor.getBlobs(doc); assertEquals(2, blobs.size()); assertTrue(blobs.contains(blob2)); }