Advertisement
Guest User

DBerror

a guest
Jul 27th, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.76 KB | None | 0 0
  1. package com.alexandergartemov.backendlessdatabase;
  2.  
  3. import android.os.Bundle;
  4. import android.support.v7.app.AppCompatActivity;
  5. import android.util.Log;
  6. import android.view.View;
  7. import android.widget.Button;
  8. import android.widget.TextView;
  9.  
  10. import com.backendless.Backendless;
  11. import com.backendless.BackendlessCollection;
  12. import com.backendless.async.callback.AsyncCallback;
  13. import com.backendless.exceptions.BackendlessFault;
  14. import com.backendless.persistence.BackendlessDataQuery;
  15.  
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. import java.util.Map;
  19. import java.util.Set;
  20.  
  21. public class MainActivity extends AppCompatActivity {
  22.  
  23.     TextView titleTextView;
  24.     TextView descriptionTextView;
  25.     TextView predescriptionTextView;
  26.     Button getButton;
  27.  
  28.  
  29.     @Override
  30.     protected void onCreate(Bundle savedInstanceState) {
  31.         super.onCreate(savedInstanceState);
  32.         setContentView(R.layout.activity_main);
  33.  
  34.         titleTextView = (TextView) findViewById(R.id.titleTextView);
  35.         descriptionTextView = (TextView) findViewById(R.id.description);
  36.         predescriptionTextView = (TextView) findViewById(R.id.predescription);
  37.         getButton = (Button) findViewById(R.id.button);
  38.  
  39.  
  40.     }
  41.  
  42.     @Override
  43.     protected void onStart() {
  44.         super.onStart();
  45.  
  46.         Backendless.initApp(this, BackendlessConstants.appId,
  47.                 BackendlessConstants.appSecretKey, BackendlessConstants.appVersion);
  48.  
  49.         getButton.setOnClickListener(new View.OnClickListener() {
  50.             @Override
  51.             public void onClick(View view) {
  52.                 onUpload();
  53.             }
  54.         });
  55.     }
  56.  
  57.     public void onUpload(){
  58.         Backendless.initApp(this, BackendlessConstants.appId,
  59.                 BackendlessConstants.appSecretKey, BackendlessConstants.appVersion);
  60.         Backendless.Persistence.mapTableToClass("Section", Map.class);
  61.  
  62.         /*Создаем список колонок таблицы Section*/
  63.         List<String> sectionColumns = new ArrayList<>();
  64.         sectionColumns.add("_id");
  65.         sectionColumns.add("section");
  66.         sectionColumns.add("columnNames");
  67.         sectionColumns.add("rows");
  68.         sectionColumns.add("columns");
  69.         sectionColumns.add("title");
  70.  
  71.         /*Скачиваем только эти колонки*/
  72.         BackendlessDataQuery dataQuery = new BackendlessDataQuery();
  73.         dataQuery.setProperties(sectionColumns);
  74.  
  75.         Backendless.Persistence.of(Map.class).find(dataQuery, new AsyncCallback<BackendlessCollection<Map>>() {
  76.             @Override
  77.             public void handleResponse(BackendlessCollection<Map> mapBackendlessCollection) {
  78.                 /*Преобразуем колекцию в список Map*/
  79.                 List<Map> section = mapBackendlessCollection.getData();
  80.  
  81.                 /*Получаем список ключей/колонок и убираем из него лишние*/
  82.                 Set set = section.get(0).keySet();
  83.                 set.remove("__meta");
  84.                 set.remove("___class");
  85.  
  86.                 //TODO: массив не нужен
  87.                 String[] keys = new String[set.size()];
  88.                 int i = 0;
  89.                 for (Object key : set) {
  90.                     keys[i] = (String) key;
  91.                     i++;
  92.                 }
  93.  
  94.                 //TODO: создать таблицу Section
  95.  
  96.                 //Скачиваем другие таблицы
  97.                 for (Map table : section) {
  98.                     //Задаем имя таблицы и колонки для скачивания
  99.                     final String tableName = (String) table.get("section");
  100.                     String[] columns = ((String) table.get("columnNames")).split(",");
  101.                     BackendlessDataQuery dataQueryTable = new BackendlessDataQuery();
  102.                     for (String property : columns) {
  103.                         dataQueryTable.addProperty(property);
  104.                     }
  105.                     //Указываем на таблицу для скачивания и качаем
  106.                     Backendless.Persistence.mapTableToClass(tableName, Map.class);
  107.                     Backendless.Persistence.of(Map.class).find(dataQueryTable, new AsyncCallback<BackendlessCollection<Map>>() {
  108.                         private boolean firstResponse = true;
  109.                         @Override
  110.                         public void handleResponse(BackendlessCollection<Map> mapBackendlessCollection) {
  111.                             int collectionSize = mapBackendlessCollection.getCurrentPage().size();
  112.                             if (firstResponse) {
  113.                                 Log.d("myLogs", tableName+" TOTAL: "+ mapBackendlessCollection.getTotalObjects());
  114.                                 /*firstResponse=false;*/
  115.                             }
  116.                             if (collectionSize > 0){
  117.                                 List<Map> table = mapBackendlessCollection.getData();
  118.                                 Set tableKeys = table.get(0).keySet();
  119.                                 Log.d("myLogs", "TABLE " + tableName + " size: " + table.size());
  120.                                 tableKeys.remove("__meta");
  121.                                 tableKeys.remove("___class");
  122.  
  123.  
  124.                                 mapBackendlessCollection.nextPage(this);
  125.                             }
  126.                         }
  127.  
  128.                         @Override
  129.                         public void handleFault(BackendlessFault backendlessFault) {
  130.  
  131.                         }
  132.                     });
  133.                 }
  134.  
  135.  
  136.             }
  137.  
  138.             @Override
  139.             public void handleFault(BackendlessFault backendlessFault) {
  140.  
  141.             }
  142.         });
  143.  
  144.  
  145.     }
  146.  
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement