/**
* 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 org.apache.camel.component.servicenow;
import java.util.function.Function;
import org.apache.camel.Message;
import org.apache.camel.util.ObjectHelper;
public enum ServiceNowParams implements ServiceNowParam {
PARAM_SYS_ID("sys_id", "CamelServiceNowSysId", String.class),
PARAM_USER_SYS_ID("user_sysid", "CamelServiceNowUserSysId", String.class),
PARAM_USER_ID("user_id", "CamelServiceNowUserId", String.class),
PARAM_CART_ITEM_ID("cart_item_id", "CamelServiceNowCartItemId", String.class),
PARAM_FILE_NAME("file_name", "CamelServiceNowFileName", String.class),
PARAM_TABLE_NAME("table_name", "CamelServiceNowTable", String.class),
PARAM_TABLE_SYS_ID("table_sys_id", "CamelServiceNowTableSysId", String.class),
PARAM_ENCRYPTION_CONTEXT("encryption_context", "CamelServiceNowEncryptionContext", String.class),
SYSPARM_CATEGORY("sysparm_category", "CamelServiceNowCategory", String.class),
SYSPARM_TYPE("sysparm_type", "CamelServiceNowType", String.class),
SYSPARM_CATALOG("sysparm_catalog", "CamelServiceNowCatalog", String.class),
SYSPARM_QUERY("sysparm_query", "CamelServiceNowQuery", String.class),
SYSPARM_DISPLAY_VALUE("sysparm_display_value", "CamelServiceNowDisplayValue", String.class, ServiceNowConfiguration::getDisplayValue),
SYSPARM_INPUT_DISPLAY_VALUE("sysparm_input_display_value", "CamelServiceNowInputDisplayValue", Boolean.class, ServiceNowConfiguration::getInputDisplayValue),
SYSPARM_EXCLUDE_REFERENCE_LINK("sysparm_exclude_reference_link", "CamelServiceNowExcludeReferenceLink", Boolean.class, ServiceNowConfiguration::getExcludeReferenceLink),
SYSPARM_FIELDS("sysparm_fields", "CamelServiceNowFields", String.class),
SYSPARM_LIMIT("sysparm_limit", "CamelServiceNowLimit", Integer.class),
SYSPARM_TEXT("sysparm_text", "CamelServiceNowText", String.class),
SYSPARM_OFFSET("sysparm_offset", "CamelServiceNowOffset", Integer.class),
SYSPARM_VIEW("sysparm_view", "CamelServiceNowView", String.class),
SYSPARM_SUPPRESS_AUTO_SYS_FIELD("sysparm_suppress_auto_sys_field", "CamelServiceNowSuppressAutoSysField", Boolean.class, ServiceNowConfiguration::getSuppressAutoSysField),
SYSPARM_SUPPRESS_PAGINATION_HEADER("sysparm_suppress_pagination_header", "CamelServiceNowSuppressPaginationHeader", Boolean.class, ServiceNowConfiguration::getSuppressPaginationHeader),
SYSPARM_MIN_FIELDS("sysparm_min_fields", "CamelServiceNowMinFields", String.class),
SYSPARM_MAX_FIELDS("sysparm_max_fields", "CamelServiceNowMaxFields", String.class),
SYSPARM_SUM_FIELDS("sysparm_sum_fields", "CamelServiceNowSumFields", String.class),
SYSPARM_AVG_FIELDS("sysparm_avg_fields", "CamelServiceNowAvgFields", String.class),
SYSPARM_COUNT("sysparm_count", "CamelServiceNowCount", Boolean.class),
SYSPARM_GROUP_BY("sysparm_group_by", "CamelServiceNowGroupBy", String.class),
SYSPARM_ORDER_BY("sysparm_order_by", "CamelServiceNowOrderBy", String.class),
SYSPARM_HAVING("sysparm_having", "CamelServiceNowHaving", String.class),
SYSPARM_UUID("sysparm_uuid", "CamelServiceNowUUID", String.class),
SYSPARM_BREAKDOWN("sysparm_breakdown", "CamelServiceNowBreakdown", String.class),
SYSPARM_INCLUDE_SCORES("sysparm_include_scores", "CamelServiceNowIncludeScores", Boolean.class, ServiceNowConfiguration::getIncludeScores),
SYSPARM_INCLUDE_SCORE_NOTES("sysparm_include_score_notes", "CamelServiceNowIncludeScoreNotes", Boolean.class, ServiceNowConfiguration::getIncludeScoreNotes),
SYSPARM_INCLUDE_AGGREGATES("sysparm_include_aggregates", "CamelServiceNowIncludeAggregates", Boolean.class, ServiceNowConfiguration::getIncludeAggregates),
SYSPARM_INCLUDE_AVAILABLE_BREAKDOWNS("sysparm_include_available_breakdowns", "CamelServiceNowIncludeAvailableBreakdowns", Boolean.class, ServiceNowConfiguration::getIncludeAvailableBreakdowns),
SYSPARM_INCLUDE_AVAILABLE_AGGREGATES("sysparm_include_available_aggregates", "CamelServiceNowIncludeAvailableAggregates", Boolean.class, ServiceNowConfiguration::getIncludeAvailableAggregates),
SYSPARM_FAVORITES("sysparm_favorites", "CamelServiceNowFavorites", Boolean.class, ServiceNowConfiguration::getFavorites),
SYSPARM_KEY("sysparm_key", "CamelServiceNowKey", Boolean.class, ServiceNowConfiguration::getKey),
SYSPARM_TARGET("sysparm_target", "CamelServiceNowTarget", Boolean.class, ServiceNowConfiguration::getTarget),
SYSPARM_DISPLAY("sysparm_display", "CamelServiceNowDisplay", String.class, ServiceNowConfiguration::getDisplay),
SYSPARM_PER_PAGE("sysparm_per_page", "CamelServiceNowPerPage", Integer.class, ServiceNowConfiguration::getPerPage),
SYSPARM_SORT_BY("sysparm_sortby", "CamelServiceNowSortBy", String.class, ServiceNowConfiguration::getSortBy),
SYSPARM_SORT_DIR("sysparm_sortdir", "CamelServiceNowSortDir", String.class, ServiceNowConfiguration::getSortDir),
SYSPARM_CONTAINS("sysparm_contains", "CamelServiceNowContains", String.class),
SYSPARM_TAGS("sysparm_tags", "CamelServiceNowTags", String.class),
SYSPARM_PAGE("sysparm_page", "CamelServiceNowPage", String.class),
SYSPARM_ELEMENTS_FILTER("sysparm_elements_filter", "CamelServiceNowElementsFilter", String.class),
SYSPARM_BREAKDOWN_RELATION("sysparm_breakdown_relation", "CamelServiceNowBreakdownRelation", String.class),
SYSPARM_DATA_SOURCE("sysparm_data_source", "CamelServiceNowDataSource", String.class),
SYSPARM_TOP_LEVEL_ONLY("sysparm_top_level_only", "CamelServiceNowTopLevelOnly", Boolean.class, ServiceNowConfiguration::getTopLevelOnly);
private final String id;
private final String header;
private final Class<?> type;
private final Function<ServiceNowConfiguration, ?> defaultValueSupplier;
ServiceNowParams(String id, String header, Class<?> type) {
this(id, header, type, null);
}
ServiceNowParams(String id, String header, Class<?> type, Function<ServiceNowConfiguration, ?> defaultValueSupplier) {
ObjectHelper.notNull(id, "ServiceNowSysParam (id)");
ObjectHelper.notNull(header, "ServiceNowSysParam (header)");
ObjectHelper.notNull(type, "ServiceNowSysParam (type)");
this.id = id;
this.header = header.startsWith(ServiceNowConstants.CAMEL_HEADER_PREFIX)
? header
: ServiceNowConstants.CAMEL_HEADER_PREFIX + ObjectHelper.capitalize(header);
this.type = type;
this.defaultValueSupplier = defaultValueSupplier;
}
public String getId() {
return id;
}
public String getHeader() {
return header;
}
public Class<?> getType() {
return type;
}
public Object getDefaultValue(ServiceNowConfiguration configuration) {
return defaultValueSupplier != null ? defaultValueSupplier.apply(configuration) : null;
}
public Object getHeaderValue(Message message) {
return message.getHeader(header, type);
}
public Object getHeaderValue(Message message, ServiceNowConfiguration configuration) {
return message.getHeader(header, getDefaultValue(configuration), type);
}
}