Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.fhluebeck.swt.s8b.bacardi;
- import android.content.Intent;
- import android.location.Location;
- import android.net.Uri;
- import android.os.Bundle;
- import android.os.Environment;
- import android.support.annotation.NonNull;
- import android.support.v7.app.AppCompatActivity;
- import android.support.v7.widget.Toolbar;
- import android.util.Log;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.ArrayAdapter;
- import android.widget.Button;
- import android.widget.HeaderViewListAdapter;
- import android.widget.ListAdapter;
- import android.widget.ListView;
- import com.aditya.filebrowser.Constants;
- import com.aditya.filebrowser.FileChooser;
- import com.google.firebase.auth.FirebaseAuth;
- import com.google.firebase.database.DataSnapshot;
- import com.google.firebase.database.DatabaseError;
- import com.google.firebase.database.DatabaseReference;
- import com.google.firebase.database.FirebaseDatabase;
- import com.google.firebase.database.ValueEventListener;
- import com.mikepenz.materialdrawer.AccountHeader;
- import com.mikepenz.materialdrawer.Drawer;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.NamedNodeMap;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import org.xml.sax.SAXException;
- import org.xmlpull.v1.XmlPullParserFactory;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.text.DecimalFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.ParserConfigurationException;
- import de.fhluebeck.swt.s8b.bacardi.helper.CarChosen;
- import de.fhluebeck.swt.s8b.bacardi.helper.Menu;
- import de.fhluebeck.swt.s8b.bacardi.helper.MyCallback;
- import de.fhluebeck.swt.s8b.bacardi.helper.firebaseObjects.Auto;
- import de.fhluebeck.swt.s8b.bacardi.helper.firebaseObjects.Strecke;
- import de.fhluebeck.swt.s8b.bacardi.helper.firebaseObjects.Wegpunkt;
- public class FahrtenbuchActivity extends AppCompatActivity {
- private Menu m;
- private Toolbar toolbar;
- private AccountHeader header;
- private Drawer drawer;
- private ArrayList<String> listItems;
- private ArrayList<Location> locations;
- private ArrayAdapter<String> adapter;
- private ListView listview;
- private Location tempLoc;
- private DatabaseReference database;
- private ArrayList<Strecke> fahrten;
- private File file;
- private Uri uri;
- private String chosenCarID = "";
- private Auto chosenCar = new Auto();
- private String uid;
- private Double kilometer;
- public static final int GPX_REQUEST = 1337;
- private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_fahrtenbuch);
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
- //set the back arrow in the toolbar
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- m = new Menu(toolbar, savedInstanceState);
- header = m.getHeader(this).build();
- drawer = m.getDrawerBuilder(this, header).build();
- drawer.setSelection(Menu.getFahrtenbuch(), false);
- m.createMenu(this, drawer);
- database = FirebaseDatabase.getInstance().getReference();
- uid = FirebaseAuth.getInstance().getUid();
- CarChosen.getChosenCarID(new MyCallback() {
- @Override
- public void onCallback(String value) {
- if (value != null || !value.trim().equals("")) {
- chosenCarID = value;
- nextMethod();
- } else {
- Intent i = new Intent(FahrtenbuchActivity.this, OverviewActivity.class);
- finish();
- startActivity(i);
- }
- }
- @Override
- public void onCallback(Auto value) {
- }
- });
- }
- private void nextMethod() {
- CarChosen.getChosenCar(chosenCarID, new MyCallback() {
- @Override
- public void onCallback(String value) {
- }
- @Override
- public void onCallback(Auto value) {
- if(value != null || value.getModel().trim().equals("")){
- chosenCar = value;
- nextMethod2();
- fahrten_anlegen();
- }
- }
- });
- }
- private void nextMethod2() {
- listview = findViewById(R.id.timestamp_listview);
- listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- ArrayList<Location> wegpunkte = new ArrayList<Location>();
- System.out.println("fahrten:" + fahrten.size() + " listitems: " + listItems.size());
- for(Wegpunkt w : fahrten.get(position).getWegpunkte()){
- Location l = new Location("");
- l.setLatitude(w.getLat());
- l.setLongitude(w.getLng());
- l.setTime(w.getZeit());
- wegpunkte.add(l);
- }
- Intent i = new Intent(FahrtenbuchActivity.this, TrackDetailActivity.class);
- //TODO Lutti
- i.putParcelableArrayListExtra("Locations",wegpunkte);
- startActivity(i);
- }
- });
- listItems = new ArrayList<String>();
- fahrten = new ArrayList<Strecke>();
- adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems);
- setListAdapter(adapter);
- final Button importGpx = findViewById(R.id.importgpx);
- importGpx.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String curText = ((Button) findViewById(R.id.importgpx)).getText().toString();
- if (curText.equals("Import GPX")) {
- chooseFile();
- importGpx.setText("Execute GPX");
- } else if (curText.equals("Execute GPX")) {
- LatLongFromGPXFile();
- importGpx.setText("Import GPX");
- }
- }
- });
- }
- protected void setListAdapter(ListAdapter adapter) {
- getListView().setAdapter(adapter);
- }
- protected ListView getListView() {
- return this.listview;
- }
- protected ListAdapter getListAdapter() {
- ListAdapter adapter = getListView().getAdapter();
- if (adapter instanceof HeaderViewListAdapter) {
- return ((HeaderViewListAdapter) adapter).getWrappedAdapter();
- } else {
- return adapter;
- }
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == GPX_REQUEST && data != null) {
- if (resultCode == RESULT_OK) {
- uri = data.getData();
- }
- }
- }
- public void chooseFile() {
- Intent i2 = new Intent(getApplicationContext(), FileChooser.class);
- i2.putExtra(Constants.SELECTION_MODE, Constants.SELECTION_MODES.SINGLE_SELECTION.ordinal());
- i2.putExtra(Constants.INITIAL_DIRECTORY, Environment.getExternalStorageDirectory() + "/Download");
- i2.putExtra(Constants.ALLOWED_FILE_EXTENSIONS, "gpx");
- startActivityForResult(i2, GPX_REQUEST);
- }
- public void LatLongFromGPXFile() {
- try {
- file = new File(uri.getPath());
- FileInputStream is = new FileInputStream(file);
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = factory.newDocumentBuilder();
- Document dom = builder.parse(is);
- Element root = dom.getDocumentElement();
- NodeList items = root.getElementsByTagName("trkpt");
- locations = new ArrayList<Location>();
- for (int j = 0; j < items.getLength(); j++) {
- Node item = items.item(j);
- NamedNodeMap attrs = item.getAttributes();
- NodeList props = item.getChildNodes();
- Location pt = new Location("");
- pt.setLatitude(Double.parseDouble(attrs.getNamedItem("lat").getTextContent()));
- pt.setLongitude(Double.parseDouble(attrs.getNamedItem("lon").getTextContent()));
- for (int k = 0; k < props.getLength(); k++) {
- Node item2 = props.item(k);
- String name = item2.getNodeName();
- if (!name.equalsIgnoreCase("time")) continue;
- try {
- pt.setTime(getDateFormatter().parse(item2.getFirstChild().getNodeValue()).getTime());
- } catch (ParseException e) {
- e.printStackTrace();
- }
- }
- for (int y = 0; y < props.getLength(); y++) {
- Node item3 = props.item(y);
- String name = item3.getNodeName();
- if (!name.equalsIgnoreCase("ele")) continue;
- pt.setAltitude(Double.parseDouble(item3.getFirstChild().getNodeValue()));
- }
- locations.add(pt);
- }
- is.close();
- } catch (SAXException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- }
- Intent i = new Intent(this, TrackDetailActivity.class);
- i.putParcelableArrayListExtra("Locations", locations);
- startActivity(i);
- }
- public static SimpleDateFormat getDateFormatter() {
- return (SimpleDateFormat) dateFormat.clone();
- }
- private void convert_strecke_to_listview(List<Strecke> list) {
- System.out.println("fahrten: " + list.size() + " listitems " + listItems.size());
- for (Strecke s : list) {
- System.out.println("fahrten: " + list.size() + " listitems " + listItems.size());
- String result = "";
- SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm");
- String datum ="";
- if(s.getWegpunkte().size() != 0){
- datum = sdf.format(new Date(s.getWegpunkte().get(0).getZeit()));
- }
- result += datum;
- DecimalFormat df = new DecimalFormat("#0.00");
- String km = df.format(s.getKilometer()) + "km";
- result += " " + chosenCar.getMarke() + " " + chosenCar.getModel() + " " + chosenCar.getKennzeichen() + " " + s.getZeit() + " " + km;
- listItems.add(result);
- adapter.notifyDataSetChanged();
- }
- }
- public void fahrten_anlegen() {
- database.child("strecken").addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
- for (DataSnapshot d : dataSnapshot.getChildren()) {
- if (((String) d.child("benutzer").getValue()).equals(uid) && ((String) d.child("auto").getValue()).equals(chosenCarID)) {
- System.out.println(d.getKey());
- String benutzer = (String) d.child("benutzer").getValue();
- String auto = (String) d.child("auto").getValue();
- if(d.child("kilometer").getValue().getClass()!= null &&d.child("kilometer").getValue().getClass() == Long.class){
- kilometer = ((Long) d.child("kilometer").getValue()).doubleValue();
- }else{if(d.child("kilometer").getValue().getClass()!= null){
- kilometer = (Double) d.child("kilometer").getValue();
- }
- }
- SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm");
- String zeit = (String) d.child("zeit").getValue();
- Double avg_kmh;
- if(d.child("durchkmh").getValue().getClass() != null && d.child("durchkmh").getValue().getClass() == Long.class){
- avg_kmh = ((Long) d.child("durchkmh").getValue()).doubleValue();
- }else{
- avg_kmh = (Double) d.child("durchkmh").getValue();
- }
- Double avg_verbrauch;
- if (d.child("durchverbr").getValue().getClass() != null &&d.child("durchverbr").getValue().getClass() == Long.class) {
- avg_verbrauch = ((Long) d.child("durchverbr").getValue()).doubleValue();
- } else {
- avg_verbrauch = (Double) d.child("durchverbr").getValue();
- }
- List<Wegpunkt> wegpunktList = new ArrayList<Wegpunkt>();
- int i = 0;
- for (DataSnapshot wegpunkt : d.child("wegpunkte").getChildren()) {
- System.out.println(i);
- Double lat = (Double) wegpunkt.child("lat").getValue();
- Double lng = (Double) wegpunkt.child("lng").getValue();
- Long time = (Long) wegpunkt.child("zeit").getValue();
- Wegpunkt w = new Wegpunkt(lat, lng, time);
- wegpunktList.add(w);
- i++;
- }
- if(wegpunktList.size() != 0){
- listItems.clear();
- Strecke strecke = new Strecke(benutzer, auto, kilometer, zeit, avg_kmh, avg_verbrauch, wegpunktList);
- fahrten.add(strecke);
- convert_strecke_to_listview(fahrten);
- }
- }
- }
- }
- @Override
- public void onCancelled(@NonNull DatabaseError databaseError) {
- }
- });
- }
- @Override
- public void onBackPressed() {
- if (!m.onBackPressed(drawer)) {
- super.onBackPressed();
- }
- }
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(m.onSaveInstanceState(drawer, header, outState));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement