package io.crate.operation.reference.sys.shard.unassigned; import com.google.common.collect.ImmutableMap; import io.crate.metadata.ColumnIdent; import io.crate.metadata.ReferenceImplementation; import io.crate.metadata.RowContextCollectorExpression; import io.crate.metadata.expressions.RowCollectExpressionFactory; import io.crate.metadata.shard.unassigned.UnassignedShard; import io.crate.metadata.sys.SysNodesTableInfo; import io.crate.metadata.sys.SysShardsTableInfo; import org.apache.lucene.util.BytesRef; import java.util.Map; public class UnassignedShardsExpressionFactories { private UnassignedShardsExpressionFactories() { } public static Map<ColumnIdent, RowCollectExpressionFactory> getSysShardsTableInfoFactories() { return ImmutableMap.<ColumnIdent, RowCollectExpressionFactory>builder() .put(SysShardsTableInfo.Columns.SCHEMA_NAME, new RowCollectExpressionFactory() { @Override public RowContextCollectorExpression create() { return new RowContextCollectorExpression<UnassignedShard, BytesRef>() { @Override public BytesRef value() { return new BytesRef(this.row.schemaName()); } }; } }) .put(SysShardsTableInfo.Columns.TABLE_NAME, new RowCollectExpressionFactory() { @Override public RowContextCollectorExpression create() { return new RowContextCollectorExpression<UnassignedShard, BytesRef>() { @Override public BytesRef value() { return new BytesRef(this.row.tableName()); } }; } }) .put(SysShardsTableInfo.Columns.PARTITION_IDENT, new RowCollectExpressionFactory() { @Override public RowContextCollectorExpression create() { return new RowContextCollectorExpression<UnassignedShard, BytesRef>() { @Override public BytesRef value() { return new BytesRef(this.row.partitionIdent()); } }; } }) .put(SysShardsTableInfo.Columns.ID, new RowCollectExpressionFactory() { @Override public RowContextCollectorExpression create() { return new RowContextCollectorExpression<UnassignedShard, Integer>() { @Override public Integer value() { return this.row.id(); } }; } }) .put(SysShardsTableInfo.Columns.NUM_DOCS, () -> new RowContextCollectorExpression<UnassignedShard, Long>() { @Override public Long value() { return 0L; } }) .put(SysShardsTableInfo.Columns.PRIMARY, () -> new RowContextCollectorExpression<UnassignedShard, Boolean>() { @Override public Boolean value() { return row.primary(); } }) .put(SysShardsTableInfo.Columns.RELOCATING_NODE, () -> new RowContextCollectorExpression<UnassignedShard, BytesRef>() { @Override public BytesRef value() { return null; } }) .put(SysShardsTableInfo.Columns.SIZE, () -> new RowContextCollectorExpression<UnassignedShard, Long>() { @Override public Long value() { return 0L; } }) .put(SysShardsTableInfo.Columns.STATE, () -> new RowContextCollectorExpression<UnassignedShard, BytesRef>() { @Override public BytesRef value() { return row.state(); } }) .put(SysShardsTableInfo.Columns.ROUTING_STATE, () -> new RowContextCollectorExpression<UnassignedShard, BytesRef>() { @Override public BytesRef value() { return row.state(); } }) .put(SysShardsTableInfo.Columns.ORPHAN_PARTITION, new RowCollectExpressionFactory() { @Override public RowContextCollectorExpression create() { return new RowContextCollectorExpression<UnassignedShard, Boolean>() { @Override public Boolean value() { return this.row.orphanedPartition(); } }; } }) .put(SysShardsTableInfo.Columns.RECOVERY, new RowCollectExpressionFactory() { @Override public RowContextCollectorExpression create() { return new RowContextCollectorExpression() { @Override public Object value() { return null; } @Override public ReferenceImplementation getChildImplementation(String name) { return this; } }; } }) .put(SysNodesTableInfo.SYS_COL_IDENT, new RowCollectExpressionFactory() { @Override public RowContextCollectorExpression create() { return new RowContextCollectorExpression() { @Override public Object value() { return null; } @Override public ReferenceImplementation getChildImplementation(String name) { return this; } }; } }) .put(SysShardsTableInfo.Columns.PATH, () -> new RowContextCollectorExpression() { @Override public Object value() { return null; } }) .put(SysShardsTableInfo.Columns.BLOB_PATH, () -> new RowContextCollectorExpression() { @Override public Object value() { return null; } }) .put(SysShardsTableInfo.Columns.MIN_LUCENE_VERSION, () -> new RowContextCollectorExpression<UnassignedShard, String>() { @Override public String value() { return null; } }) .build(); } }