Search in sources :

Example 6 with IndexInfo

use of org.apache.geode.management.internal.cli.domain.IndexInfo in project geode by apache.

the class CreateDefinedIndexesFunction method execute.

@Override
public void execute(FunctionContext context) {
    String memberId = null;
    List<Index> indexes = null;
    Cache cache = null;
    try {
        cache = CacheFactory.getAnyInstance();
        memberId = cache.getDistributedSystem().getDistributedMember().getId();
        QueryService queryService = cache.getQueryService();
        Set<IndexInfo> indexDefinitions = (Set<IndexInfo>) context.getArguments();
        for (IndexInfo indexDefinition : indexDefinitions) {
            String indexName = indexDefinition.getIndexName();
            String indexedExpression = indexDefinition.getIndexedExpression();
            String regionPath = indexDefinition.getRegionPath();
            if (indexDefinition.getIndexType() == IndexInfo.KEY_INDEX) {
                queryService.defineKeyIndex(indexName, indexedExpression, regionPath);
            } else if (indexDefinition.getIndexType() == IndexInfo.HASH_INDEX) {
                queryService.defineHashIndex(indexName, indexedExpression, regionPath);
            } else {
                queryService.defineIndex(indexName, indexedExpression, regionPath);
            }
        }
        indexes = queryService.createDefinedIndexes();
        context.getResultSender().lastResult(new CliFunctionResult(memberId));
    } catch (MultiIndexCreationException e) {
        StringBuffer sb = new StringBuffer();
        sb.append("Index creation failed for indexes: ").append("\n");
        for (Map.Entry<String, Exception> failedIndex : e.getExceptionsMap().entrySet()) {
            sb.append(failedIndex.getKey()).append(" : ").append(failedIndex.getValue().getMessage()).append("\n");
        }
        context.getResultSender().lastResult(new CliFunctionResult(memberId, e, sb.toString()));
    } catch (Exception e) {
        String exceptionMessage = CliStrings.format(CliStrings.EXCEPTION_CLASS_AND_MESSAGE, e.getClass().getName(), e.getMessage());
        context.getResultSender().lastResult(new CliFunctionResult(memberId, e, exceptionMessage));
    }
}
Also used : Set(java.util.Set) Index(org.apache.geode.cache.query.Index) IndexInfo(org.apache.geode.management.internal.cli.domain.IndexInfo) MultiIndexCreationException(org.apache.geode.cache.query.MultiIndexCreationException) QueryService(org.apache.geode.cache.query.QueryService) MultiIndexCreationException(org.apache.geode.cache.query.MultiIndexCreationException) Cache(org.apache.geode.cache.Cache)

Aggregations

IndexInfo (org.apache.geode.management.internal.cli.domain.IndexInfo)6 Cache (org.apache.geode.cache.Cache)5 XmlEntity (org.apache.geode.management.internal.configuration.domain.XmlEntity)4 Set (java.util.Set)3 QueryService (org.apache.geode.cache.query.QueryService)3 CliMetaData (org.apache.geode.management.cli.CliMetaData)3 ConverterHint (org.apache.geode.management.cli.ConverterHint)3 Result (org.apache.geode.management.cli.Result)3 CliFunctionResult (org.apache.geode.management.internal.cli.functions.CliFunctionResult)3 InfoResultData (org.apache.geode.management.internal.cli.result.InfoResultData)3 CliCommand (org.springframework.shell.core.annotation.CliCommand)3 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 HashSet (java.util.HashSet)2 List (java.util.List)2 TreeSet (java.util.TreeSet)2 AtomicReference (java.util.concurrent.atomic.AtomicReference)2 Index (org.apache.geode.cache.query.Index)2 DistributedMember (org.apache.geode.distributed.DistributedMember)2 InternalCache (org.apache.geode.internal.cache.InternalCache)2