package alien4cloud.security.groups; import java.beans.IntrospectionException; import java.io.IOException; import java.util.List; import java.util.Map; import javax.annotation.PostConstruct; import javax.annotation.Resource; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.mapping.MappingBuilder; import org.springframework.stereotype.Component; import alien4cloud.dao.ESGenericSearchDAO; import alien4cloud.dao.model.GetMultipleDataResult; import alien4cloud.exception.IndexingServiceException; import alien4cloud.security.model.Group; @Component("group-dao") public class ElasticSearchGroupDao extends ESGenericSearchDAO implements IAlienGroupDao { @Resource private MappingBuilder mappingBuilder; @PostConstruct public void initEnvironment() { // init ES annotation scanning try { mappingBuilder.initialize(Group.class.getPackage().getName()); } catch (IntrospectionException | IOException e) { throw new IndexingServiceException("Could not initialize elastic search mapping builder", e); } // init indexes and mapped classes initIndices(Group.class.getSimpleName().toLowerCase(), null, new Class<?>[] { Group.class }); initCompleted(); } @Override public void save(Group group) { super.save(group); } @Override public Group find(String id) { return super.findById(Group.class, id); } @Override public void delete(String groupId) { delete(Group.class, groupId); } @Override public boolean isGroupWithNameExist(String groupName) { return super.count(Group.class, QueryBuilders.termQuery("name", groupName)) > 0; } @Override public GetMultipleDataResult search(String searchQuery, Map<String, String[]> filters, int from, int size) { return super.search(Group.class, searchQuery, filters, from, size); } @Override public GetMultipleDataResult find(Map<String, String[]> filters, int maxElements) { return super.find(Group.class, filters, maxElements); } @Override public List<Group> find(String... ids) { return super.findByIds(Group.class, ids); } @Override public Group findByName(String groupName) { return super.customFind(Group.class, QueryBuilders.termQuery("name", groupName)); } }