initialize method

  1. @override
Future<void> initialize(
  1. DataEndPoint dataEndPoint,
  2. SmartphoneDeployment deployment,
  3. Stream<Measurement> measurements
)
override

Initialize the data manager by specifying the study deployment, the dataEndPoint, and the stream of measurements events to handle.

Implementation

@override
Future<void> initialize(
  DataEndPoint dataEndPoint,
  SmartphoneDeployment deployment,
  Stream<Measurement> measurements,
) async {
  assert(dataEndPoint is SQLiteDataEndPoint);
  await super.initialize(dataEndPoint, deployment, measurements);

  info('Initializing $runtimeType...');

  _databasePath ??= await getDatabasesPath();

  // Open the database - make sure to use the same database across app (re)start
  database = await openDatabase(
    databaseName,
    version: 1,
    singleInstance: true,
    onCreate: (Database db, int version) async {
      // when creating the database, create the measurements table
      debug("$runtimeType - Creating '$MEASUREMENT_TABLE_NAME' table");
      await db.execute('CREATE TABLE $MEASUREMENT_TABLE_NAME ('
          '$ID_COLUMN INTEGER PRIMARY KEY AUTOINCREMENT, '
          // SQLite does not have a separate Boolean storage class. Instead,
          // boolean values are stored as integers 0 (false) and 1 (true).
          '$UPLOADED_COLUMN INTEGER, '
          '$DEPLOYMENT_ID_COLUMN TEXT, '
          '$TRIGGER_ID_COLUMN INTEGER, '
          '$DEVICE_ROLE_NAME_COLUMN TEXT, '
          '$DATATYPE_COLUMN TEXT, '
          '$MEASUREMENT_COLUMN TEXT)');

      debug("$runtimeType - '$databaseName' DB created");
    },
  );
}