Revision 42170
Added by Sandro La Bruzzo about 8 years ago
GridFSObjectStore.java | ||
---|---|---|
11 | 11 |
import java.util.stream.Collectors; |
12 | 12 |
|
13 | 13 |
import com.mongodb.BasicDBObject; |
14 |
import com.mongodb.DBCursor; |
|
14 | 15 |
import com.mongodb.DBObject; |
15 | 16 |
import com.mongodb.gridfs.GridFS; |
16 | 17 |
import com.mongodb.gridfs.GridFSDBFile; |
... | ... | |
178 | 179 |
@Override |
179 | 180 |
public List<ObjectStoreFile> retrieveObjects(final int page, final int size) { |
180 | 181 |
final Iterator<DBObject> listObjects = |
181 |
collection.getFileList(new BasicDBObject()).sort(new BasicDBObject("_id", 1)).skip(page * size).limit(size).iterator();
|
|
182 |
collection.getFileList(new BasicDBObject()).sort(new BasicDBObject("_id", 1)).skip(page).limit(size).iterator(); |
|
182 | 183 |
return DnetStreamSupport.generateStreamFromIterator(listObjects) |
183 | 184 |
.map(it -> ObjectStoreFileUtility.build((GridFSDBFile) it, baseURI, id)) |
184 | 185 |
.collect(Collectors.toList()); |
... | ... | |
287 | 288 |
* @param objectId the object id |
288 | 289 |
* @return true, if successful |
289 | 290 |
*/ |
290 |
private boolean alreadyExist(final String objectId) { |
|
291 |
BasicDBObject query = new BasicDBObject("_id", objectId); |
|
291 |
@Override |
|
292 |
public boolean alreadyExist(final String objectId) { |
|
293 |
BasicDBObject query = new BasicDBObject("filename", objectId); |
|
292 | 294 |
List<GridFSDBFile> file = collection.find(query); |
293 | 295 |
return file != null && file.size() > 0; |
294 | 296 |
} |
295 | 297 |
|
296 | 298 |
@Override |
297 | 299 |
public ObjectStoreFile deliverObject(final String objectId) throws ObjectStoreServiceException { |
298 |
BasicDBObject query = new BasicDBObject("_id", objectId);
|
|
299 |
List<GridFSDBFile> file = collection.find(query);
|
|
300 |
BasicDBObject query = new BasicDBObject("filename", objectId);
|
|
301 |
final DBCursor fileList = collection.getFileList(query);
|
|
300 | 302 |
|
301 |
checkSingleItem(objectId, file); |
|
302 |
|
|
303 |
return ObjectStoreFileUtility.build(file.get(0), baseURI, id); |
|
304 |
|
|
303 |
if (fileList.hasNext()) return ObjectStoreFileUtility.build((GridFSDBFile) fileList.next(), baseURI, id); |
|
304 |
return null; |
|
305 | 305 |
} |
306 | 306 |
|
307 | 307 |
/** |
... | ... | |
323 | 323 |
*/ |
324 | 324 |
@Override |
325 | 325 |
public InputStream deliverStream(final String objectId) throws ObjectStoreFileNotFoundException { |
326 |
BasicDBObject query = new BasicDBObject("_id", objectId);
|
|
326 |
BasicDBObject query = new BasicDBObject("filename", objectId);
|
|
327 | 327 |
List<GridFSDBFile> file = collection.find(query); |
328 | 328 |
checkSingleItem(objectId, file); |
329 | 329 |
return file.get(0).getInputStream(); |
... | ... | |
358 | 358 |
if (record.getInputStream() == null) { |
359 | 359 |
throw new ObjectStoreServiceException("missing inputstream on record " + record.getFileMetadata().getObjectID()); |
360 | 360 |
} |
361 |
GridFSInputFile currentFile = collection.createFile(record.getInputStream()); |
|
362 |
currentFile.setId(record.getFileMetadata().getObjectID()); |
|
363 |
currentFile.setFilename(record.getFileMetadata().getObjectID()); |
|
361 |
|
|
362 |
GridFSInputFile currentFile = collection.createFile(record.getInputStream(), record.getFileMetadata().getObjectID()); |
|
363 |
// collection.createFile(record.getInputStream()); |
|
364 |
// currentFile.setId(record.getFileMetadata().getObjectID()); |
|
365 |
// currentFile.setFilename(record.getFileMetadata().getObjectID()); |
|
364 | 366 |
BasicDBObject metadata = new BasicDBObject(); |
365 | 367 |
metadata.put("id", record.getFileMetadata().getObjectID()); |
366 | 368 |
metadata.put("mime", record.getFileMetadata().getMimeType()); |
... | ... | |
375 | 377 |
currentFile.save(); |
376 | 378 |
|
377 | 379 |
} catch (Exception e) { |
378 |
log.error(e); |
|
379 | 380 |
throw new ObjectStoreServiceException(e); |
380 | 381 |
} finally { |
381 | 382 |
try { |
... | ... | |
394 | 395 |
*/ |
395 | 396 |
@Override |
396 | 397 |
public boolean existIDStartsWith(final String startId) { |
397 |
BasicDBObject query = new BasicDBObject("_id", startId);
|
|
398 |
BasicDBObject query = new BasicDBObject("id", startId); |
|
398 | 399 |
List<GridFSDBFile> file = collection.find(query); |
399 | 400 |
return file.size() > 0; |
400 | 401 |
} |
Also available in: Unified diff
fixed download into gridfs