content: /*
   * Copyright 2010-2025 Hyland Software, Inc. and its affiliates.
   *
   * Licensed 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 org.activiti.engine.impl;
  
  import java.io.Serializable;
  import org.activiti.engine.impl.interceptor.Command;
  import org.activiti.engine.impl.interceptor.CommandContext;
  import org.activiti.engine.impl.interceptor.CommandExecutor;
  import org.activiti.engine.management.TablePage;
  import org.activiti.engine.management.TablePageQuery;
  
  /**
   *
  
   */
  public class TablePageQueryImpl implements TablePageQuery, Command<TablePage>, Serializable {
  
      private static final long serialVersionUID = 1L;
  
      transient CommandExecutor commandExecutor;
  
      protected String tableName;
      protected String order;
      protected int firstResult;
      protected int maxResults;
  
      public TablePageQueryImpl() {}
  
      public TablePageQueryImpl(CommandExecutor commandExecutor) {
          this.commandExecutor = commandExecutor;
      }
  
      public TablePageQueryImpl tableName(String tableName) {
          this.tableName = tableName;
          return this;
      }
  
      public TablePageQueryImpl orderAsc(String column) {
          addOrder(column, AbstractQuery.SORTORDER_ASC);
          return this;
      }
  
      public TablePageQueryImpl orderDesc(String column) {
          addOrder(column, AbstractQuery.SORTORDER_DESC);
          return this;
      }
  
      public String getTableName() {
          return tableName;
      }
  
      protected void addOrder(String column, String sortOrder) {
          if (order == null) {
              order = "";
          } else {
              order = order + ", ";
          }
          order = order + column + " " + sortOrder;
      }
  
      public TablePage listPage(int firstResult, int maxResults) {
          this.firstResult = firstResult;
          this.maxResults = maxResults;
          return commandExecutor.execute(this);
      }
  
      public TablePage execute(CommandContext commandContext) {
          return commandContext.getTableDataManager().getTablePage(this, firstResult, maxResults);
      }
  
      public String getOrder() {
          return order;
      }
  }
  