Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Include sortBy parameter in BrAPI field import #902

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public class BrapiActivity extends ThemedActivity {
private BrapiStudyDetails selectedStudy;

BrapiLoadDialog brapiLoadDialog;
private String sortBy;

// Filter by
private String programDbId;
Expand Down Expand Up @@ -79,6 +80,12 @@ public void onCreate(Bundle savedInstanceState) {
TextView baseURLText = findViewById(R.id.brapiBaseURL);
baseURLText.setText(brapiBaseURL);

// Set the default sort option from strings.xml
String[] sortByOptions = getResources().getStringArray(R.array.brapi_study_sort_by_options);
if (sortByOptions.length > 0) {
sortBy = sortByOptions[0];
}

loadToolbar();
loadObservationLevels();
} else {
Expand Down Expand Up @@ -107,7 +114,25 @@ private void loadToolbar() {
}
}

private void setupObservationLevelsSpinner() {
private void setupSpinners() {

Spinner sortBySpinner = findViewById(R.id.sortBySpinner);
ArrayAdapter<CharSequence> sortByAdapter = ArrayAdapter.createFromResource(this,
R.array.brapi_study_sort_by_options, android.R.layout.simple_spinner_item);
sortByAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sortBySpinner.setAdapter(sortByAdapter);
sortBySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
sortBy = parent.getItemAtPosition(position).toString();
Toast.makeText(BrapiActivity.this, "New sortBy option selected: " + sortBy, Toast.LENGTH_SHORT).show();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your toast should use a string resource.

Copy link
Collaborator Author

@bellerbrock bellerbrock Mar 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. Was only needed for debugging anyway, so just removed it.

I don't feel too strongly either way about the names, but my thinking is that it's probably best to stick with the actual BrAPI names since they are short and should only be seen by more sophisticated users. I already get confused enough with the whole field (fieldBook) = study (BrAPI) = trial (breedbase) situation 😂

loadStudiesList(); // Reload studies list with the new sort option
}

@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});

if (!observationLevels.isEmpty()) {
selectedObservationLevel = observationLevels.get(0);
Expand Down Expand Up @@ -142,8 +167,8 @@ private void loadStudiesList() {
//init page numbers
paginationManager.refreshPageIndicator();
Integer initPage = paginationManager.getPage();

brAPIService.getStudies(this.programDbId, this.trialDbId, paginationManager, new Function<List<BrapiStudyDetails>, Void>() {
brAPIService.getStudies(this.programDbId, this.trialDbId, this.sortBy, paginationManager, new Function<List<BrapiStudyDetails>, Void>() {
@Override
public Void apply(final List<BrapiStudyDetails> studies) {

Expand Down Expand Up @@ -195,7 +220,7 @@ private void loadObservationLevels() {
brAPIService.getObservationLevels(programDbId, input -> {
this.observationLevels = input;
runOnUiThread(() -> {
setupObservationLevelsSpinner();
setupSpinners();
loadStudiesList();
});
}, failureInput -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ static void handleConnectionError(Context context, int code) {

void getTrials(String programDbId, BrapiPaginationManager paginationManager, final Function<List<BrapiTrial>, Void> function, final Function<Integer, Void> failFunction);

void getStudies(String programDbId, String trialDbId, BrapiPaginationManager paginationManager, final Function<List<BrapiStudyDetails>, Void> function, final Function<Integer, Void> failFunction);
void getStudies(String programDbId, String trialDbId, String sortBy, BrapiPaginationManager paginationManager, final Function<List<BrapiStudyDetails>, Void> function, final Function<Integer, Void> failFunction);

void getStudyDetails(final String studyDbId, final Function<BrapiStudyDetails, Void> function, final Function<Integer, Void> failFunction);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ private List<BrapiTrial> mapTrials(List<TrialSummary> trialList) {
return brapiTrials;
}

public void getStudies(String programDbId, String trialDbId, BrapiPaginationManager paginationManager,
public void getStudies(String programDbId, String trialDbId, String sortBy, BrapiPaginationManager paginationManager,
final Function<List<BrapiStudyDetails>, Void> function,
final Function<Integer, Void> failFunction) {
Integer initPage = paginationManager.getPage();
Expand Down Expand Up @@ -380,7 +380,7 @@ public void onFailure(ApiException error, int i, Map<String, List<String>> map)
studiesApi.studiesGetAsync(
null, null, null, programDbId,
null, null, trialDbId, null, null,
null, true, null, null,
null, true, sortBy, null,
paginationManager.getPage(), paginationManager.getPageSize(), getBrapiToken(), callback);

} catch (ApiException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ private List<BrapiTrial> mapTrials(List<BrAPITrial> trialList) {
return brapiTrials;
}

public void getStudies(String programDbId, String trialDbId, BrapiPaginationManager paginationManager,
public void getStudies(String programDbId, String trialDbId, String sortBy, BrapiPaginationManager paginationManager,
final Function<List<BrapiStudyDetails>, Void> function,
final Function<Integer, Void> failFunction) {
Integer initPage = paginationManager.getPage();
Expand Down Expand Up @@ -401,7 +401,7 @@ public void onFailure(ApiException error, int i, Map<String, List<String>> map)
};

StudyQueryParams queryParams = new StudyQueryParams();
queryParams.active("true").programDbId(programDbId).trialDbId(trialDbId).page(paginationManager.getPage()).pageSize(paginationManager.getPageSize());
queryParams.active("true").programDbId(programDbId).trialDbId(trialDbId).sortBy(sortBy).page(paginationManager.getPage()).pageSize(paginationManager.getPageSize());
studiesApi.studiesGetAsync(queryParams, callback);

} catch (ApiException error) {
Expand Down
48 changes: 36 additions & 12 deletions app/src/main/res/layout/activity_brapi.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,48 +10,72 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:minHeight="?attr/actionBarSize" />
android:minHeight="?attr/actionBarSize"
android:layout_marginBottom="10dp"/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:orientation="horizontal">
android:orientation="horizontal"
android:layout_marginBottom="16dp">

<TextView
android:id="@+id/brapiBaseURLLbl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingBottom="5dp"
android:text="@string/brapi_base_url" />

<TextView
android:id="@+id/brapiBaseURL"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
android:layout_height="wrap_content"
android:text="Base URL Here" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="10dp">

<TextView
android:id="@+id/sortByLbl"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="@string/brapi_study_sort_by" />

<Spinner
android:id="@+id/sortBySpinner"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="10dp">

<TextView
android:id="@+id/observationLevelLbl"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:paddingLeft="10dp"
android:paddingBottom="5dp"
android:paddingRight="10dp"
android:text="@string/brapi_observation_level" />

<Spinner
android:id="@+id/studyObservationLevels"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingBottom="10dp"
android:paddingStart="10dp" />
android:layout_weight="3" />
</LinearLayout>

<LinearLayout
Expand Down
8 changes: 8 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -884,6 +884,14 @@
<string name="brapi_study_name">Name</string>
<string name="brapi_study_description">Description</string>
<string name="brapi_study_location">Location</string>
<string name="brapi_study_sort_by">Sort By</string>
<string-array name="brapi_study_sort_by_options">
<item>studyName</item>
<item>studyDbId</item>
<item>trialName</item>
<item>trialDbId</item>
<item>locationDbId</item>
</string-array>
<string name="brapi_observation_level">Observation Level</string>
<string name="brapi_study_num_traits"> Traits</string>
<string name="brapi_not_found">ERROR: Target system does not support this operation via BrAPI.</string>
Expand Down
4 changes: 2 additions & 2 deletions app/src/test/java/BrapiServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
public class BrapiServiceTest {

private static final String BRAPI_URL = "https://test-server.brapi.org";

private static final String SORT_BY = "studyName";
private BrAPIService brAPIService;
private final String programDbId;
private final String trialDbId;
Expand Down Expand Up @@ -120,7 +120,7 @@ public void checkGetStudies() {

BrapiPaginationManager pageMan = new BrapiPaginationManager(0, 1000);
// Call our get studies endpoint with the same parsing that our classes use.
this.brAPIService.getStudies(null, this.trialDbId, pageMan, new Function<List<BrapiStudyDetails>, Void>() {
this.brAPIService.getStudies(null, this.trialDbId, SORT_BY, pageMan, new Function<List<BrapiStudyDetails>, Void>() {
@Override
public Void apply(List<BrapiStudyDetails> input) {
// Check that there is atleast one study returned.
Expand Down