/*
* Licensed to Crate under one or more contributor license agreements.
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership. Crate 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.
*
* However, if you have executed another commercial license agreement
* with Crate these terms will supersede the license and you may use the
* software solely pursuant to the terms of the relevant commercial
* agreement.
*/
package io.crate.metadata.information;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSortedMap;
import io.crate.metadata.*;
import io.crate.types.DataType;
import io.crate.types.DataTypes;
import org.elasticsearch.cluster.service.ClusterService;
public class InformationSqlFeaturesTableInfo extends InformationTableInfo {
public static final String NAME = "sql_features";
public static final TableIdent IDENT = new TableIdent(InformationSchemaInfo.NAME, NAME);
public static class Columns {
public static final ColumnIdent FEATURE_ID = new ColumnIdent("feature_id");
public static final ColumnIdent FEATURE_NAME = new ColumnIdent("feature_name");
public static final ColumnIdent SUB_FEATURE_ID = new ColumnIdent("sub_feature_id");
public static final ColumnIdent SUB_FEATURE_NAME = new ColumnIdent("sub_feature_name");
public static final ColumnIdent IS_SUPPORTED = new ColumnIdent("is_supported");
public static final ColumnIdent IS_VERIFIED_BY = new ColumnIdent("is_verified_by");
public static final ColumnIdent COMMENTS = new ColumnIdent("comments");
}
public static class References {
public static final Reference FEATURE_ID = createRef(Columns.FEATURE_ID, DataTypes.STRING);
public static final Reference FEATURE_NAME = createRef(Columns.FEATURE_NAME, DataTypes.STRING);
public static final Reference SUB_FEATURE_ID = createRef(Columns.SUB_FEATURE_ID, DataTypes.STRING);
public static final Reference SUB_FEATURE_NAME = createRef(Columns.SUB_FEATURE_NAME, DataTypes.STRING);
public static final Reference IS_SUPPORTED = createRef(Columns.IS_SUPPORTED, DataTypes.BOOLEAN);
public static final Reference IS_VERIFIED_BY = createRef(Columns.IS_VERIFIED_BY, DataTypes.STRING);
public static final Reference COMMENTS = createRef(Columns.COMMENTS, DataTypes.STRING);
}
private static Reference createRef(ColumnIdent columnIdent, DataType dataType) {
return new Reference(new ReferenceIdent(IDENT, columnIdent), RowGranularity.DOC, dataType);
}
protected InformationSqlFeaturesTableInfo(ClusterService clusterService) {
super(clusterService, IDENT,
ImmutableList.of(Columns.FEATURE_ID,
Columns.FEATURE_NAME,
Columns.SUB_FEATURE_ID,
Columns.SUB_FEATURE_NAME,
Columns.IS_SUPPORTED,
Columns.IS_VERIFIED_BY,
Columns.COMMENTS),
ImmutableSortedMap.<ColumnIdent, Reference>naturalOrder()
.put(Columns.FEATURE_ID, References.FEATURE_ID)
.put(Columns.FEATURE_NAME, References.FEATURE_NAME)
.put(Columns.SUB_FEATURE_ID, References.SUB_FEATURE_ID)
.put(Columns.SUB_FEATURE_NAME, References.SUB_FEATURE_NAME)
.put(Columns.IS_SUPPORTED, References.IS_SUPPORTED)
.put(Columns.IS_VERIFIED_BY, References.IS_VERIFIED_BY)
.put(Columns.COMMENTS, References.COMMENTS)
.build()
);
}
}