package com.ushahidi.platform.mobile.app.data.repository; import com.ushahidi.platform.mobile.app.data.entity.mapper.FormAttributeEntityDataMapper; import com.ushahidi.platform.mobile.app.data.repository.datasource.formattribute.FormAttributeDataSource; import com.ushahidi.platform.mobile.app.data.repository.datasource.formattribute.FormAttributeDataSourceFactory; import com.ushahidi.platform.mobile.app.domain.entity.FormAttribute; import com.ushahidi.platform.mobile.app.domain.entity.From; import com.ushahidi.platform.mobile.app.domain.repository.FormAttributeRepository; import android.support.annotation.NonNull; import java.util.List; import javax.inject.Inject; import rx.Observable; /** * @author Ushahidi Team <team@ushahidi.com> */ public class FormAttributeDataRepository implements FormAttributeRepository { private final FormAttributeDataSourceFactory mFormAttributeDataSourceFactory; private final FormAttributeEntityDataMapper mFormAttributeEntityDataMapper; /** * Default constructor that creates {@link FormDataRepository} * * @param formAttributeDataSourceFactory A factory to create the different data source * implementations * @param formAttributeEntityDataMapper The @{link FormEntityDataMapper} */ @Inject public FormAttributeDataRepository( @NonNull FormAttributeDataSourceFactory formAttributeDataSourceFactory, FormAttributeEntityDataMapper formAttributeEntityDataMapper) { mFormAttributeDataSourceFactory = formAttributeDataSourceFactory; mFormAttributeEntityDataMapper = formAttributeEntityDataMapper; } @Override public Observable<List<FormAttribute>> getFormAttributes(Long deploymentId, Long formId, From from) { FormAttributeDataSource formAttributeDataSource; if (from == From.ONLINE) { formAttributeDataSource = mFormAttributeDataSourceFactory.createApiDataSource(); } else { formAttributeDataSource = mFormAttributeDataSourceFactory .createDatabaseDataSource(); } return formAttributeDataSource.getFormAttributes(deploymentId, formId) .map(mFormAttributeEntityDataMapper::map); } }