    /*
     * Licensed to the Apache Software Foundation (ASF) under one or more
     * contributor license agreements.  See the NOTICE file distributed with
     * this work for additional information regarding copyright ownership.
     * The ASF licenses this file to You under the Apache License, Version 2.0
     * (the "License"); you may not use this file except in compliance with
     * the License.  You may obtain a copy of the License at
     *
     *     http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    package cal;

    import java.util.Map;
    import java.util.concurrent.ConcurrentHashMap;

    import jakarta.servlet.http.HttpServletRequest;

    public class TableBean {

        private final Map<String, Entries> table;
        private final JspCalendar JspCal;
        private Entries entries;
        private String date;
        private String name = null;
        private String email = null;
        private boolean processError = false;

        public TableBean() {
            this.table = new ConcurrentHashMap<>(10);
            this.JspCal = new JspCalendar();
            this.date = JspCal.getCurrentDate();
        }

        public void setName(String nm) {
            this.name = nm;
        }

        public String getName() {
            return this.name;
        }

        public void setEmail(String mail) {
            this.email = mail;
        }

        public String getEmail() {
            return this.email;
        }

        public String getDate() {
            return this.date;
        }

        public Entries getEntries() {
            return this.entries;
        }

        public void processRequest(HttpServletRequest request) {

            // Get the name and e-mail.
            this.processError = false;
            if (name == null || name.equals("")) {
                setName(request.getParameter("name"));
            }
            if (email == null || email.equals("")) {
                setEmail(request.getParameter("email"));
            }
            if (name == null || email == null || name.equals("")
                    || email.equals("")) {
                this.processError = true;
                return;
            }

            // Get the date.
            String dateR = request.getParameter("date");
            if (dateR == null) {
                date = JspCal.getCurrentDate();
            } else if (dateR.equalsIgnoreCase("next")) {
                date = JspCal.getNextDate();
            } else if (dateR.equalsIgnoreCase("prev")) {
                date = JspCal.getPrevDate();
            }

            entries = table.get(date);
            if (entries == null) {
                entries = new Entries();
                table.put(date, entries);
            }

            // If time is provided add the event.
            String time = request.getParameter("time");
            if (time != null) {
                entries.processRequest(request, time);
            }
        }

        public boolean getProcessError() {
            return this.processError;
        }
    }