Алгоритм Java для извлечения и хранения пользовательских дат с использованием базы данных Firestore

# #java #android #algorithm #google-cloud-firestore

Вопрос:

Поэтому я пытаюсь построить этот алгоритм, он будет извлекать ссылку (в данном случае дату), эта дата будет использоваться для проверки моей базы данных firestore, чтобы убедиться, что на эту же дату забронировали менее 3 сотрудников. Так что вы увидите здесь

Дата начала = 202131день = Четверг, 1 апреля 2021 года

Итак, я запускаю цикл, в этом цикле есть счетчик, этот счетчик будет учитывать количество раз, когда эта ссылка вызывается в цикле. Однако, если цикл повторяется 3 раза, программа остановит цикл, что замечательно, но я не могу понять, как выполнить условие, если цикл разрешился менее чем за 3 итерации. Например, на данный момент в моей базе данных хранятся только 2 из этих ссылок, поэтому я успешно могу вызывать каждую итерацию, но при этом не учитывается, что есть еще 1 дополнительный слот.

мой код:

 final Query query = db.collection("holidays").whereEqualTo("startDateReference",totalDateCode);
                    query.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                        @Override
                        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {

                            //creating a map to obtain information
                            Map<String, Object> test = new HashMap<>();
                            //counter
                            int counter = 0;
                            boolean flag = false;

                            //retrieve data as a hashmap document
                            for (QueryDocumentSnapshot documentSnapshot: queryDocumentSnapshots){
                                Note data = documentSnapshot.toObject(Note.class);
                                test.put("startDateReference", data.getStartDateReference());
                                Collection<Object> values = test.values();

                                //retrieve results as single values
                                for (Object string : values) {

                                    do {
                                        //System.out.println(string);

                                        if (string.equals("202131Thursday")) {
                                            counter  ;
                                            System.out.println("Checking for holidays"   counter);

                                        } else if (counter == 3) {
                                            System.out.println("could not save data it is packed");

                                        } else {
                                            System.out.println("storing details");

                                        }

                                    } while (counter == 3);

                                }
                            }
                        }
                    });
 

Результаты, которые я получаю:

 > I/System.out: 0
>     Checking for holidays1 I/System.out: 1
>     Checking for holidays2
 

Но после этого последнего результата я ожидаю, что это условие будет выполнено, как показано в условии else в моем коде, так как в нем есть дополнительное пространство (обратите внимание, что я не закодировал функцию хранилища базы данных, я использую только текст строки, чтобы увидеть, как это будет работать прямо сейчас, и в базе данных есть только 2 ссылки, есть дополнительный слот, в котором я пытаюсь сохранить детали).:

 System.out.println("storing details");
 

Ответ №1:

Вызовите другое условие вне всех циклов, а затем, после того как циклы разрешатся, вы можете использовать счетчик в качестве его окончательной формы, чтобы проверить, есть ли место или нет, используя операторы else if.