import com.activeandroid.Model; //导入方法依赖的package包/类
public static UploaderQueue newEntry(String action, Model obj) {
UserError.Log.d(TAG, "new entry called");
final UploaderQueue result = new UploaderQueue();
result.bitfield_wanted = DEFAULT_UPLOAD_CIRCUITS
| (Pref.getBooleanDefaultFalse("cloud_storage_mongodb_enable") ? MONGO_DIRECT : 0)
| (Pref.getBooleanDefaultFalse("cloud_storage_api_enable") ? NIGHTSCOUT_RESTAPI : 0)
| (Pref.getBooleanDefaultFalse("cloud_storage_influxdb_enable") ? INFLUXDB_RESTAPI : 0)
| (Pref.getBooleanDefaultFalse("wear_sync") ? WATCH_WEARAPI : 0);
if (result.bitfield_wanted == 0) return null; // no queue required
result.timestamp = JoH.tsl();
result.reference_id = obj.getId();
// TODO this probably could be neater
if (result.reference_uuid == null)
result.reference_uuid = obj instanceof BgReading ? ((BgReading) obj).uuid : null;
if (result.reference_uuid == null)
result.reference_uuid = obj instanceof Treatments ? ((Treatments) obj).uuid : null;
if (result.reference_uuid == null)
result.reference_uuid = obj instanceof Calibration ? ((Calibration) obj).uuid : null;
if (result.reference_uuid == null)
result.reference_uuid = obj instanceof BloodTest ? ((BloodTest) obj).uuid : null;
if (result.reference_uuid == null) {
Log.d(TAG, "reference_uuid was null so refusing to create new entry");
return null;
}
if (result.reference_id < 0) {
UserError.Log.wtf(TAG, "ERROR ref id was: " + result.reference_id + " for uuid: " + result.reference_uuid + " refusing to create");
return null;
}
result.action = action;
result.bitfield_complete = 0;
result.type = obj.getClass().getSimpleName();
result.saveit();
if (d) UserError.Log.d(TAG, result.toS());
last_new_entry = JoH.tsl();
return result;
}