andyshon

TaskCompareWordsActivity.java

Jan 5th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 16.09 KB | None | 0 0
  1. package com.teachme.activities.Managers.TeacherViews.TeachersTasks;
  2.  
  3. import android.content.Intent;
  4. import android.os.Build;
  5. import android.support.annotation.NonNull;
  6. import android.support.annotation.RequiresApi;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.os.Bundle;
  9. import android.text.Editable;
  10. import android.text.TextWatcher;
  11. import android.view.View;
  12. import android.widget.Button;
  13. import android.widget.EditText;
  14. import android.widget.LinearLayout;
  15. import android.widget.Toast;
  16.  
  17. import com.teachme.DB.Pattern;
  18. import com.teachme.DB.RestClient;
  19. import com.teachme.R;
  20. import com.teachme.global.Global_config;
  21.  
  22. import org.json.JSONArray;
  23. import org.json.JSONException;
  24. import org.json.JSONObject;
  25.  
  26. import java.util.ArrayList;
  27. import java.util.Collections;
  28.  
  29. import retrofit2.Call;
  30. import retrofit2.Callback;
  31. import retrofit2.Response;
  32.  
  33. public class TaskCompareWordsActivity extends AppCompatActivity implements View.OnClickListener{
  34.  
  35.     RestClient restService;
  36.     private String _Pattern_Id, _Lesson_Id, lesson_title, pattern_title;
  37.     private static int block_serial_number=-1;
  38.  
  39.     private EditText editTextName;
  40.     private Button btnInsertBlock, btnSave;
  41.     private ArrayList<EditText> editTexts_list;
  42.     private ArrayList<Blocks> list_of_blocks;
  43.     private LinearLayout layout_blocks;
  44.  
  45.  
  46.     private void printPatterInfo(Pattern pattern) {
  47.         System.out.println("getId:" + pattern.getId());
  48.         System.out.println("getLessonId:" + pattern.getLessonId());
  49.         System.out.println("getName:" + pattern.getName());
  50.         System.out.println("getCreatedAt:" + pattern.getCreatedAt());
  51.         System.out.println("getUpdatedAt:" + pattern.getUpdatedAt());
  52.         System.out.println("getVersion:" + pattern.getVersion());
  53.         System.out.println("getJsonText:" + pattern.getJsonText());
  54.         System.out.println("isDeleted:" + pattern.isDeleted());
  55.     }
  56.  
  57.     @Override
  58.     protected void onCreate(Bundle savedInstanceState) {
  59.         super.onCreate(savedInstanceState);
  60.         restService = new RestClient();
  61.         setContentView(R.layout.activity_task_compare_words);
  62.  
  63.         Global_config.returnBack=0;
  64.  
  65.  
  66.         _Pattern_Id = "";
  67.         Intent intent = getIntent();
  68.         pattern_title = intent.getStringExtra("pattern_title");
  69.         lesson_title = intent.getStringExtra("lesson_title");
  70.         _Lesson_Id = intent.getStringExtra("lesson_Id");
  71.         _Pattern_Id = intent.getStringExtra("pattern_Id");
  72.  
  73.         editTexts_list = new ArrayList<>();
  74.         list_of_blocks = new ArrayList<>();
  75.  
  76.         editTextName = findViewById(R.id.title);
  77.         layout_blocks = findViewById(R.id.layout_blocks);
  78.  
  79.         btnInsertBlock = findViewById(R.id.btnInsertBlock);
  80.         btnInsertBlock.setOnClickListener(this);
  81.         btnSave = findViewById(R.id.btnSave4);
  82.         btnSave.setOnClickListener(this);
  83.  
  84.  
  85.         //TODO: Шаблон существует, запрашиваем его на сервере
  86.         if (_Pattern_Id != null && !_Pattern_Id.isEmpty()) {
  87.             Call<Pattern> call = restService.getService().getPatternById(_Pattern_Id);
  88.             call.enqueue(new Callback<Pattern>() {
  89.                 @Override
  90.                 public void onResponse(@NonNull Call<Pattern> call, @NonNull Response<Pattern> response) {
  91.                     Pattern pattern = response.body();
  92.                     printPatterInfo(pattern);
  93.  
  94.                     _Lesson_Id = pattern.getLessonId();
  95.                     pattern_title = pattern.getName();
  96.  
  97.                     editTextName.setText(pattern_title);
  98.  
  99.                     ArrayList<String> list = new ArrayList<>();
  100.                     ArrayList<String> col1Normal = new ArrayList<>();
  101.                     ArrayList<String> col2Normal = new ArrayList<>();
  102.  
  103.                     try {
  104.                         JSONObject jsonObject = new JSONObject(pattern.getJsonText());
  105.  
  106.                         JSONArray jsonArray = jsonObject.getJSONArray("Words");
  107.                         for (int i = 0; i < jsonArray.length(); i++) {
  108.                             JSONObject explrObject = jsonArray.getJSONObject(i);
  109.                             String str = explrObject.getString("textMessage");
  110.                             list.add(str);
  111.                         }
  112.                     } catch (JSONException e) {
  113.                         e.printStackTrace();
  114.                     }
  115.  
  116.  
  117.                     for (int k = 0; k < list.size(); k++) {
  118.                         if (k % 2 == 0)
  119.                             col1Normal.add(list.get(k));
  120.                         else
  121.                             col2Normal.add(list.get(k));
  122.                     }
  123.                     System.out.println("col1::" + col1Normal.toString());
  124.                     System.out.println("col2::" + col2Normal.toString());
  125.  
  126.  
  127.                     System.out.println("list_of_blocks.size() = " + list_of_blocks.size());
  128.  
  129.                     //  Вставить LinearLayout в котором два EditText'a
  130.                     for (int i = 0; i < list.size()/2; i++) {
  131.                         LinearLayout linearLayout = new LinearLayout(TaskCompareWordsActivity.this);
  132.                         linearLayout.setOrientation(LinearLayout.HORIZONTAL);
  133.  
  134.                         final EditText editText1 = new EditText(TaskCompareWordsActivity.this);
  135.                         final EditText editText2 = new EditText(TaskCompareWordsActivity.this);
  136.  
  137.                         final Blocks block1 = new Blocks("");
  138.                         list_of_blocks.add(block1);
  139.                         final Blocks block2 = new Blocks("");
  140.                         list_of_blocks.add(block2);
  141.  
  142.                         for (int k = 0, k2=i; k<col1Normal.size(); k++, k2++) {
  143.                             editText1.setEms(8);
  144.                             editText1.setText(col1Normal.get(i));
  145.                             editText1.addTextChangedListener(new TextWatcher() {
  146.                                 @Override
  147.                                 public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
  148.                                 @Override
  149.                                 public void onTextChanged(CharSequence s, int start, int before, int count) {}
  150.  
  151.                                 @Override
  152.                                 public void afterTextChanged(Editable s) {
  153.                                     int index = list_of_blocks.indexOf(block1);
  154.                                     list_of_blocks.get(index).text = editText1.getText().toString();
  155.                                 }
  156.                             });
  157.  
  158.                             editText2.setEms(8);
  159.                             editText2.setText(col2Normal.get(i));
  160.                             editText2.addTextChangedListener(new TextWatcher() {
  161.                                 @Override
  162.                                 public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
  163.                                 @Override
  164.                                 public void onTextChanged(CharSequence s, int start, int before, int count) {}
  165.  
  166.                                 @Override
  167.                                 public void afterTextChanged(Editable s) {
  168.                                     int index = list_of_blocks.indexOf(block2);
  169.                                     list_of_blocks.get(index).text = editText2.getText().toString();
  170.                                 }
  171.                             });
  172.                         }
  173.                         editTexts_list.add(editText1);
  174.                         editTexts_list.add(editText2);
  175.  
  176.                         linearLayout.addView(editText1);
  177.                         linearLayout.addView(editText2);
  178.  
  179.                         layout_blocks.addView(linearLayout);
  180.                     }
  181.                 }
  182.  
  183.                 @Override
  184.                 public void onFailure(@NonNull Call<Pattern> call, @NonNull Throwable t) {
  185.                     Toast.makeText(TaskCompareWordsActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
  186.  
  187.                 }
  188.             });
  189.         }
  190.         //TODO: Шаблон не существует, заполняем его title & text автоматически
  191.         else {
  192.             editTextName.setText(pattern_title);
  193.         }
  194.  
  195.         //TODO: Функционал шаблона Compare words
  196.         editTextName.addTextChangedListener(new TextWatcher() {
  197.             @Override
  198.             public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
  199.             @Override
  200.             public void onTextChanged(CharSequence s, int start, int before, int count) {}
  201.             @Override
  202.             public void afterTextChanged(Editable s) {
  203.                 pattern_title = String.valueOf(editTextName.getText());
  204.             }
  205.         });
  206.     }
  207.  
  208.     class Blocks{
  209.         private String text;
  210.         Blocks(String t){
  211.             text = t;
  212.             block_serial_number++;
  213.         }
  214.     }
  215.  
  216.  
  217.     @RequiresApi(api = Build.VERSION_CODES.KITKAT)
  218.     @Override
  219.     public void onClick(View v) {
  220.         switch (v.getId()){
  221.             case R.id.btnSave4:
  222.                 //TODO: save pattern in DB
  223.  
  224.                 final JSONArray array = new JSONArray();
  225.  
  226.                 for (int i=0; i<list_of_blocks.size(); i++) {
  227.                     JSONObject jsonObject = null;
  228.                     try {
  229.                         jsonObject = new JSONObject();
  230.                         jsonObject.put("textMessage", list_of_blocks.get(i).text);
  231.  
  232.                         array.put(jsonObject);
  233.                     } catch (JSONException e) {
  234.                         e.printStackTrace();
  235.                     }
  236.                 }
  237.                 System.out.println("JSON ARRAY to string:" + array.toString());
  238.  
  239.                 final JSONObject mainObj = new JSONObject();
  240.                 try {
  241.                     mainObj.put("Words", array);
  242.                 } catch (JSONException e) {
  243.                     e.printStackTrace();
  244.                 }
  245.                 System.out.println("mainObj to string:" + mainObj.toString());
  246.  
  247.  
  248.                 if (_Pattern_Id == null || _Pattern_Id.isEmpty()) {
  249.                     //TODO No Id -> new pattern
  250.  
  251.                     Pattern pattern = new Pattern();
  252.  
  253.                     pattern.setJsonText(array.toString());
  254.                     pattern.setName(editTextName.getText().toString());
  255.                     pattern.setLessonId(_Lesson_Id);
  256.                     pattern.setType("compare words");
  257.  
  258.                     restService.getService().addPattern(pattern).enqueue(new Callback<Pattern>() {
  259.                         @Override
  260.                         public void onResponse(@NonNull Call<Pattern> call, @NonNull Response<Pattern> response) {
  261.                             if (response.code() == 201) {
  262.                                 Toast.makeText(TaskCompareWordsActivity.this, "New Pattern Added.", Toast.LENGTH_SHORT).show();
  263.  
  264.                                 Global_config.returnBack=1;
  265.                                 finish();
  266.                             } else {
  267.                                 Toast.makeText(TaskCompareWordsActivity.this, "Not Created:" + response.errorBody(), Toast.LENGTH_SHORT).show();
  268.                             }
  269.                         }
  270.  
  271.                         @Override
  272.                         public void onFailure(@NonNull Call<Pattern> call, @NonNull Throwable t) {
  273.                             Toast.makeText(TaskCompareWordsActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
  274.                         }
  275.                     });
  276.  
  277.                 } else {
  278.                     //TODO Update existing pattern
  279.  
  280.                     Call<Pattern> call = restService.getService().getPatternById(_Pattern_Id);
  281.                     call.enqueue(new Callback<Pattern>() {
  282.                         @Override
  283.                         public void onResponse(@NonNull Call<Pattern> call, @NonNull Response<Pattern> response) {
  284.  
  285.                             Pattern existingPattern = response.body();
  286.  
  287.                             existingPattern.setJsonText(mainObj.toString());
  288.                             existingPattern.setName(editTextName.getText().toString());
  289.                             existingPattern.setLessonId(_Lesson_Id);
  290.                             existingPattern.setType("compare words");
  291.  
  292.                             // Use Backend API to update pattern
  293.                             restService.getService().updatePatternById(_Pattern_Id, existingPattern).enqueue(new Callback<Pattern>() {
  294.                                 @Override
  295.                                 public void onResponse(@NonNull Call<Pattern> call, @NonNull Response<Pattern> response) {
  296.                                     Toast.makeText(TaskCompareWordsActivity.this, response.body().getName() + " updated.", Toast.LENGTH_SHORT).show();
  297.  
  298.                                     Global_config.returnBack=1;
  299.                                     finish();
  300.                                 }
  301.  
  302.                                 @Override
  303.                                 public void onFailure(@NonNull Call<Pattern> call, @NonNull Throwable t) {
  304.                                     Toast.makeText(TaskCompareWordsActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
  305.                                 }
  306.                             });
  307.                         }
  308.  
  309.                         @Override
  310.                         public void onFailure(@NonNull Call<Pattern> call, @NonNull Throwable t) {
  311.                             Toast.makeText(TaskCompareWordsActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
  312.  
  313.                         }
  314.                     });
  315.                 }
  316.                 break;
  317.  
  318.             case R.id.btnInsertBlock:
  319.  
  320.                 //  Вставить LinearLayout в котором два EditText'a
  321.                 LinearLayout linearLayout = new LinearLayout(this);
  322.                 linearLayout.setOrientation(LinearLayout.HORIZONTAL);
  323.  
  324.  
  325.                 final EditText editText1 = new EditText(this);
  326.  
  327.                 final Blocks block1 = new Blocks("");
  328.                 list_of_blocks.add(block1);
  329.  
  330.                 editText1.setEms(8);
  331.                 editText1.setHint("Часть 1");
  332.                 editText1.addTextChangedListener(new TextWatcher() {
  333.                     @Override
  334.                     public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
  335.                     @Override
  336.                     public void onTextChanged(CharSequence s, int start, int before, int count) {}
  337.                     @Override
  338.                     public void afterTextChanged(Editable s) {
  339.                         int index = list_of_blocks.indexOf(block1);
  340.                         list_of_blocks.get(index).text = editText1.getText().toString();
  341.                     }
  342.                 });
  343.  
  344.                 final EditText editText2 = new EditText(this);
  345.  
  346.                 final Blocks block2 = new Blocks("");
  347.                 list_of_blocks.add(block2);
  348.  
  349.                 editText2.setEms(8);
  350.                 editText2.setHint("Часть 2");
  351.                 editText2.addTextChangedListener(new TextWatcher() {
  352.                     @Override
  353.                     public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
  354.                     @Override
  355.                     public void onTextChanged(CharSequence s, int start, int before, int count) {}
  356.                     @Override
  357.                     public void afterTextChanged(Editable s) {
  358.                         int index = list_of_blocks.indexOf(block2);
  359.                         list_of_blocks.get(index).text = editText2.getText().toString();
  360.                     }
  361.                 });
  362.  
  363.                 editTexts_list.add(editText1);
  364.                 editTexts_list.add(editText2);
  365.                 System.out.println("size of EditTexts_list = " + editTexts_list.size());
  366.  
  367.                 linearLayout.addView(editText1);
  368.                 linearLayout.addView(editText2);
  369.  
  370.                 layout_blocks.addView(linearLayout);
  371.  
  372.                 break;
  373.         }
  374.     }
  375. }
Add Comment
Please, Sign In to add comment