All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.redis.om.spring.KeyspaceToIndexMap Maven / Gradle / Ivy

package com.redis.om.spring;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;

import org.springframework.stereotype.Component;

@Component
public class KeyspaceToIndexMap {
  private Map> keyspaceToEntityClass = new ConcurrentHashMap<>();
  private Map, String> entityClassToKeySpace = new ConcurrentHashMap<>();
  private List> indexedEntityClasses = new ArrayList<>();

  public Optional getIndexName(String keyspace) {
    Class entityClass = keyspaceToEntityClass.get(getKey(keyspace));
    if (entityClass != null) {
      return Optional.of(entityClass.getName() + "Idx");
    } else {
      return Optional.empty();
    }
  }
  
  public Optional getIndexName(Class entityClass) {
    if (entityClassToKeySpace.containsKey(entityClass)) {
      return Optional.of(entityClass.getName() + "Idx");
    } else {
      return Optional.empty();
    }
  }

  public void addKeySpaceMapping(String keyspace, Class entityClass, boolean isIndexed) {
    String key = getKey(keyspace);
    keyspaceToEntityClass.put(key, entityClass);
    entityClassToKeySpace.put(entityClass, key);
    if (isIndexed) indexedEntityClasses.add(entityClass);
  }

  public Class getEntityClassForKeyspace(String keyspace) {
    return keyspaceToEntityClass.get(getKey(keyspace));
  }

  public String getKeyspaceForEntityClass(Class entityClass) {
    return entityClassToKeySpace.get(entityClass);
  }
  
  public boolean indexExistsFor(Class entityClass) {
    return indexedEntityClasses.contains(entityClass);
  }

  private String getKey(String keyspace) {
    return keyspace.endsWith(":") ? keyspace : keyspace + ":";
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy