package com.thinkbiganalytics.datalake.authorization.model;
/*-
* #%L
* thinkbig-hadoop-authorization-core
* %%
* Copyright (C) 2017 ThinkBig Analytics
* %%
* 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.
* #L%
*/
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/***
* SearchPolicy class for setting search parameters and returns search query object
*
*/
public class SearchPolicy {
private Integer pageSize;
private Integer startIndex;
private String policyName;
private List<String> columns;
private List<String> columnFamilies;
private List<String> tables;
private List<String> udfs;
private List<String> databases;
private String groupName;
private String repositoryType;
private Boolean isRecursive;
private String repositoryName;
private String username;
private Boolean isEnabled;
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getStartIndex() {
return startIndex;
}
public void setStartIndex(Integer startIndex) {
this.startIndex = startIndex;
}
public String getPolicyName() {
return policyName;
}
public void setPolicyName(String policyName) {
this.policyName = policyName;
}
public List<String> getColumns() {
return columns;
}
public void setColumns(List<String> columns) {
this.columns = columns;
}
public List<String> getColumnFamilies() {
return columnFamilies;
}
public void setColumnFamilies(List<String> columnFamilies) {
this.columnFamilies = columnFamilies;
}
public List<String> getTables() {
return tables;
}
public void setTables(List<String> tables) {
this.tables = tables;
}
public List<String> getUdfs() {
return udfs;
}
public void setUdfs(List<String> udfs) {
this.udfs = udfs;
}
public List<String> getDatabases() {
return databases;
}
public void setDatabases(List<String> databases) {
this.databases = databases;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getRepositoryType() {
return repositoryType;
}
public void setRepositoryType(String repositoryType) {
this.repositoryType = repositoryType;
}
public Boolean isRecursive() {
return isRecursive;
}
public void setRecursive(Boolean recursive) {
isRecursive = recursive;
}
public String getRepositoryName() {
return repositoryName;
}
public void setRepositoryName(String repositoryName) {
this.repositoryName = repositoryName;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Boolean isEnabled() {
return isEnabled;
}
public void setEnabled(Boolean enabled) {
isEnabled = enabled;
}
/***
* SearchCriteria function for building search query with passed passed search parameters
*
* @return Map object with search parameters
*/
public Map<String, Object> searchCriteria()
{
Map<String, Object> searchParams = new HashMap<>();
ArrayList<String> columns = new ArrayList<String>();
ArrayList<String> columnFamilies = new ArrayList<String>();
ArrayList<String> tables = new ArrayList<String>();
ArrayList<String> udfs = new ArrayList<String>();
//Add columns to list
if (columns.isEmpty()) {
//Do not add anything to list
} else {
for (int colCnt = 0; colCnt < columns.size(); colCnt++) {
columns.add(getColumns().get(colCnt));
}
searchParams.put("columns", columns);
}
//Add columnfamilies to list
if (columnFamilies.isEmpty()) {
//Do not add anything to list
} else {
for (int colFamilyCnt = 0; colFamilyCnt < getColumnFamilies().size(); colFamilyCnt++) {
columnFamilies.add(getColumnFamilies().get(colFamilyCnt));
}
searchParams.put("columnFamilies", columnFamilies);
}
//Add tables
if (tables.isEmpty()) {
//Do not add anything to list
} else {
for (int tableCnt = 0; tableCnt < getTables().size(); tableCnt++) {
tables.add(getTables().get(tableCnt));
}
searchParams.put("tables", tables);
}
//Add udf names to list
if (udfs.isEmpty()) {
} else {
for (int udfCnt = 0; udfCnt < getUdfs().size(); udfCnt++) {
tables.add(getUdfs().get(udfCnt));
}
searchParams.put("udfs", udfs);
}
searchParams.put("pageSize", getPageSize());
searchParams.put("startIndex", getStartIndex());
searchParams.put("policyName", getPolicyName());
searchParams.put("groupName", getGroupName());
searchParams.put("repositoryType", getRepositoryType());
searchParams.put("isRecursive", isRecursive());
searchParams.put("repositoryName", getRepositoryName());
searchParams.put("userName", getUsername());
searchParams.put("isEnabled", isEnabled());
return searchParams;
}
}