Dart Documentationmongo_dartGridOut

GridOut class

class GridOut extends GridFSFile {

 GridOut([Map data]) : super(data);

 Future writeToFilename(String filename) {
   return writeToFile(new File(filename));
 }

 Future writeToFile(File file) {
   var completer = new Completer();
   var sink = file.openWrite(mode: FileMode.WRITE);    
   writeTo(sink).then((int length) {
     sink.close();
   });
   return sink.done;
 }

 Future<int> writeTo(IOSink out) {
   int length = 0;
   Completer completer = new Completer();
   addToSink(Map chunk) {
     BsonBinary data = chunk["data"];
     out.add(data.byteList);                
     length += data.byteList.length;
   }  
   fs.chunks.find(where.eq("files_id", id).sortBy('n'))
     .forEach(addToSink)
     .then((_) => completer.complete(length));
   return completer.future;
 }
}

Extends

GridFSFile > GridOut

Constructors

new GridOut([Map data]) #

Creates a new Object instance.

Object instances have no meaningful state, and are only useful through their identity. An Object instance is equal to itself only.

docs inherited from Object
GridOut([Map data]) : super(data);

Properties

final List<String> aliases #

inherited from GridFSFile
List<String> get aliases {
 return extraData["aliases"];
}

int chunkSize #

inherited from GridFSFile
int chunkSize

String contentType #

inherited from GridFSFile
String contentType

Map data #

inherited from GridFSFile
Map get data {
 Map result = {
   "_id" : id,
   "filename" : filename,
   "contentType" : contentType,
   "length" : length,
   "chunkSize" : chunkSize,
   "uploadDate" : uploadDate,
   "md5" : md5,
 };
 extraData.forEach((String key, Object value) {
   result[key] = value;
 });
 return result;
}
set data(Map input) {
 extraData = new Map.from(input);

 // Remove the known keys. Leaving the extraData. 
 id = extraData.remove("_id");
 filename = extraData.remove("filename");
 contentType = extraData.remove("contentType");
 length = extraData.remove("length");
 chunkSize = extraData.remove("chunkSize");
 uploadDate = extraData.remove("uploadDate");
 md5 = extraData.remove("md5");
}

Map<String, Object> extraData #

inherited from GridFSFile
Map<String, Object> extraData

String filename #

inherited from GridFSFile
String filename

GridFS fs #

inherited from GridFSFile
GridFS fs = null

var id #

inherited from GridFSFile
var id

int length #

inherited from GridFSFile
int length

String md5 #

inherited from GridFSFile
String md5

Map metaData #

inherited from GridFSFile
Map get metaData {
 return extraData["metadata"];
}
set metaData(Map metaData) {
 extraData["metadata"] = metaData;
}

DateTime uploadDate #

inherited from GridFSFile
DateTime uploadDate

Methods

int numChunks() #

inherited from GridFSFile
int numChunks() {
 return (length.toDouble() / chunkSize).ceil().toInt();
}

Future<Map> save() #

inherited from GridFSFile
Future<Map> save() {
 if (fs == null) {
   throw new MongoDartError('Need fs');
 }
 Map tempData = data;
 return fs.files.insert(tempData);
}

void setGridFS(GridFS fs) #

inherited from GridFSFile
void setGridFS( GridFS fs ) {
 this.fs = fs;
}

Future<bool> validate() #

inherited from GridFSFile
Future<bool> validate() {
 if (fs == null) {
   throw new MongoDartError('no fs');
 }
 if (md5 == null) {
   throw new MongoDartError('no md5 stored');
 }

 Completer completer = new Completer();
 // query for md5 at filemd5
 DbCommand dbCommand = new DbCommand(
     fs.database,fs.bucketName,0,0,1,{"filemd5" : id}, {"md5" : 1});
 fs.database.executeDbCommand(dbCommand).then((Map data) {
   if (data != null && data.containsKey("md5")) {
     completer.complete(md5 == data["md5"]);
   } else {
     completer.complete(false);
   }
 });
 return completer.future;
}

Future<int> writeTo(IOSink out) #

Future<int> writeTo(IOSink out) {
 int length = 0;
 Completer completer = new Completer();
 addToSink(Map chunk) {
   BsonBinary data = chunk["data"];
   out.add(data.byteList);                
   length += data.byteList.length;
 }  
 fs.chunks.find(where.eq("files_id", id).sortBy('n'))
   .forEach(addToSink)
   .then((_) => completer.complete(length));
 return completer.future;
}

Future writeToFile(File file) #

Future writeToFile(File file) {
 var completer = new Completer();
 var sink = file.openWrite(mode: FileMode.WRITE);    
 writeTo(sink).then((int length) {
   sink.close();
 });
 return sink.done;
}

Future writeToFilename(String filename) #

Future writeToFilename(String filename) {
 return writeToFile(new File(filename));
}