From 1907b88bbdece524e9624db01a624158a41d52cd Mon Sep 17 00:00:00 2001 From: Mateusz Lubecki Date: Thu, 14 Oct 2021 22:00:47 +0200 Subject: [PATCH] data exoirt --- .idea/misc.xml | 2 +- .../pogodacc/activity/ExportDataActivity.java | 128 +++++++++++++++++- .../pogodacc/activity/MainActivity.java | 7 +- ...ationsActRecyclerViewButtonClickEvent.java | 13 ++ .../ExportDataActStartButtonClickEvent.java | 36 +++++ .../MainActImageButtonExportClickEvent.java | 5 +- .../type/ParceableFavsCallReason.java | 4 +- .../main/res/layout/activity_export_data.xml | 105 +++++++++++++- 8 files changed, 285 insertions(+), 15 deletions(-) create mode 100644 app/src/main/java/cc/pogoda/mobile/pogodacc/activity/handler/ExportDataActStartButtonClickEvent.java diff --git a/.idea/misc.xml b/.idea/misc.xml index f1674c3..4a63e1c 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,7 +5,7 @@ - + diff --git a/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/ExportDataActivity.java b/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/ExportDataActivity.java index 1fe5023..c97ac8a 100644 --- a/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/ExportDataActivity.java +++ b/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/ExportDataActivity.java @@ -2,27 +2,153 @@ package cc.pogoda.mobile.pogodacc.activity; import androidx.appcompat.app.AppCompatActivity; +import android.content.Intent; import android.os.Bundle; +import android.text.Editable; +import android.view.View; import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.DatePicker; +import android.widget.EditText; import android.widget.Spinner; +import android.widget.TextView; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; +import org.threeten.bp.ZoneId; +import org.threeten.bp.ZonedDateTime; import cc.pogoda.mobile.pogodacc.R; +import cc.pogoda.mobile.pogodacc.activity.handler.ExportDataActStartButtonClickEvent; +import cc.pogoda.mobile.pogodacc.type.ParceableFavsCallReason; +import cc.pogoda.mobile.pogodacc.type.ParceableStationsList; +import cc.pogoda.mobile.pogodacc.type.WeatherStation; public class ExportDataActivity extends AppCompatActivity { - Spinner formatSpinner; + private Spinner formatSpinner; + + private Button selectStationButton; + + private Button startExportButton; + + private Spinner outputFormat; + + AppCompatActivity act; + + TextView stationNameToExport; + + EditText exportLn; + + DatePicker datePicker; + + WeatherStation stationToExport = null; + + ExportDataActStartButtonClickEvent exportEvent; + + public WeatherStation getStationToExport() { + return stationToExport; + } + + public int getExportLnInHours() { + int out = 0; + + Editable text = exportLn.getText(); + + try { + Integer ln = Integer.valueOf(text.toString()); + + if (ln > 100) { + out = 100; + } + else { + out = ln; + } + } + catch (NumberFormatException ee) { + out = -1; + } + + return out; + } + + public long getStartTimestamp() { + long out = 0; + + int year = datePicker.getYear(); + int month = datePicker.getMonth(); + int day = datePicker.getDayOfMonth(); + + ZonedDateTime dateTime = ZonedDateTime.of(year, month, day, 0, 0, 0, 0, ZoneId.systemDefault()); + + ZonedDateTime utc = dateTime.withZoneSameInstant(ZoneId.of("UTC")); + + out = utc.toEpochSecond(); + + return out; + } + + public int getOutputFormat() { + return -1; + } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_export_data); + EventBus.getDefault().register(this); + + act = this; + + ParceableStationsList favs = getIntent().getParcelableExtra("favs"); + formatSpinner = findViewById(R.id.spinnerOutputFormat); + selectStationButton = findViewById(R.id.buttonSelectStationExport); + stationNameToExport = findViewById(R.id.textViewStationToExport); + startExportButton = findViewById(R.id.buttonExportStart); + exportLn = findViewById(R.id.editTextNumberExport); + datePicker = findViewById(R.id.datePickerExportStartDate); + outputFormat = findViewById(R.id.spinnerOutputFormat); + + selectStationButton.setOnClickListener(new View.OnClickListener() { + + Intent intent; + + @Override + public void onClick(View view) { + intent = new Intent(act, FavouritesActivity.class); + intent.putExtra("favs", favs); + + ParceableFavsCallReason callReason = new ParceableFavsCallReason(ParceableFavsCallReason.Reason.EXPORT_SELECT); + intent.putExtra("callReason", callReason); + + act.startActivity(intent); + } + }); + + startExportButton.setOnClickListener(new ExportDataActStartButtonClickEvent(this)); ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.export_formats, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); formatSpinner.setAdapter(adapter); + + } + + @Override + protected void onDestroy() { + super.onDestroy(); + EventBus.getDefault().unregister(this); + + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void stationToExportEvent(WeatherStation wx) { + stationNameToExport.setText(wx.getDisplayedName()); + + stationToExport = wx; } } \ No newline at end of file diff --git a/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/MainActivity.java b/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/MainActivity.java index 460a050..263cb8b 100644 --- a/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/MainActivity.java +++ b/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/MainActivity.java @@ -159,6 +159,9 @@ public class MainActivity extends AppCompatActivity { // convert this to parceable to exchange across intents parceableListOfAllStations = ParceableStationsList.createFromStdList(listOfAllStations); + // recreate list of favorites + recreateListOfFavs(); + ImageButton imageButtonAllStations = (ImageButton)findViewById(R.id.imageButtonAllStations); if (imageButtonAllStations != null) imageButtonAllStations.setOnClickListener(new MainActImageButtonAllStationsClickEvent(this, parceableListOfAllStations)); @@ -168,11 +171,9 @@ public class MainActivity extends AppCompatActivity { // set an action for clicking on export data button exportButton = (ImageButton)findViewById(R.id.imageButtonExport); if (exportButton != null) { - exportButton.setOnClickListener(new MainActImageButtonExportClickEvent(this)); + exportButton.setOnClickListener(new MainActImageButtonExportClickEvent(this, parceableListOfFavStations)); } - // recreate list of favorites - recreateListOfFavs(); } @Override diff --git a/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/handler/AllStationsActRecyclerViewButtonClickEvent.java b/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/handler/AllStationsActRecyclerViewButtonClickEvent.java index ad512cc..9183ea7 100644 --- a/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/handler/AllStationsActRecyclerViewButtonClickEvent.java +++ b/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/handler/AllStationsActRecyclerViewButtonClickEvent.java @@ -1,10 +1,13 @@ package cc.pogoda.mobile.pogodacc.activity.handler; +import android.app.Activity; import android.content.Intent; import android.view.View; import androidx.appcompat.app.AppCompatActivity; +import org.greenrobot.eventbus.EventBus; + import cc.pogoda.mobile.pogodacc.activity.StationDetailsActivity; import cc.pogoda.mobile.pogodacc.type.ParceableFavsCallReason; import cc.pogoda.mobile.pogodacc.type.WeatherStation; @@ -33,6 +36,16 @@ public class AllStationsActRecyclerViewButtonClickEvent implements View.OnClickL p.startActivity(intent); + return; + } + else if (reason == ParceableFavsCallReason.Reason.EXPORT_SELECT) { + + EventBus.getDefault().post(station); + + p.setResult(Activity.RESULT_OK); + + p.finish(); + return; } } diff --git a/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/handler/ExportDataActStartButtonClickEvent.java b/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/handler/ExportDataActStartButtonClickEvent.java new file mode 100644 index 0000000..cf995af --- /dev/null +++ b/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/handler/ExportDataActStartButtonClickEvent.java @@ -0,0 +1,36 @@ +package cc.pogoda.mobile.pogodacc.activity.handler; + +import android.view.View; + +import cc.pogoda.mobile.pogodacc.activity.ExportDataActivity; +import cc.pogoda.mobile.pogodacc.dao.StationDataDao; +import cc.pogoda.mobile.pogodacc.type.WeatherStation; +import cc.pogoda.mobile.pogodacc.type.web.ListOfStationData; + +public class ExportDataActStartButtonClickEvent implements View.OnClickListener{ + + ExportDataActivity activity; + + public ExportDataActStartButtonClickEvent(ExportDataActivity act) { + activity = act; + } + + @Override + public void onClick(View view) { + + StationDataDao stationDataDao; + + WeatherStation toExport = activity.getStationToExport(); + + if (toExport != null) { + long timestampStart = activity.getStartTimestamp(); + long timestampStop = timestampStart + activity.getExportLnInHours() * 3600; + + stationDataDao = new StationDataDao(); + + ListOfStationData stationData = stationDataDao.getLastStationData(toExport.getSystemName(), timestampStart, timestampStop); + + } + + } +} diff --git a/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/handler/MainActImageButtonExportClickEvent.java b/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/handler/MainActImageButtonExportClickEvent.java index 9e76626..93b50bb 100644 --- a/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/handler/MainActImageButtonExportClickEvent.java +++ b/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/handler/MainActImageButtonExportClickEvent.java @@ -7,6 +7,8 @@ import androidx.appcompat.app.AppCompatActivity; import cc.pogoda.mobile.pogodacc.activity.AllStationsActivity; import cc.pogoda.mobile.pogodacc.activity.ExportDataActivity; +import cc.pogoda.mobile.pogodacc.activity.FavouritesActivity; +import cc.pogoda.mobile.pogodacc.type.ParceableStationsList; public class MainActImageButtonExportClickEvent implements View.OnClickListener{ @@ -14,10 +16,11 @@ public class MainActImageButtonExportClickEvent implements View.OnClickListener{ Intent intent; - public MainActImageButtonExportClickEvent(AppCompatActivity p) { + public MainActImageButtonExportClickEvent(AppCompatActivity p, ParceableStationsList favs) { parent = p; intent = new Intent(this.parent, ExportDataActivity.class); + intent.putExtra("favs", favs); } @Override diff --git a/app/src/main/java/cc/pogoda/mobile/pogodacc/type/ParceableFavsCallReason.java b/app/src/main/java/cc/pogoda/mobile/pogodacc/type/ParceableFavsCallReason.java index 924a5b6..09b5568 100644 --- a/app/src/main/java/cc/pogoda/mobile/pogodacc/type/ParceableFavsCallReason.java +++ b/app/src/main/java/cc/pogoda/mobile/pogodacc/type/ParceableFavsCallReason.java @@ -24,8 +24,8 @@ public class ParceableFavsCallReason implements Parcelable { int reasonInt = in.readInt(); switch (reasonInt) { - case 1: reason = Reason.FAVOURITES; - case 2: reason = Reason.EXPORT_SELECT; + case 1: reason = Reason.FAVOURITES; break; + case 2: reason = Reason.EXPORT_SELECT; break; default: reason = null; } } diff --git a/app/src/main/res/layout/activity_export_data.xml b/app/src/main/res/layout/activity_export_data.xml index 0a2424d..a392957 100644 --- a/app/src/main/res/layout/activity_export_data.xml +++ b/app/src/main/res/layout/activity_export_data.xml @@ -22,24 +22,115 @@ app:layout_constraintTop_toTopOf="parent" /> + + + android:layout_marginTop="64dp" + android:fontFamily="@font/alegreya_sans_sc_medium" + android:text="@string/output_export_format" + android:textSize="20sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.498" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/buttonSelectStationExport" /> + + + + + + + + + + + + +