/** * Resolves index collection type according to field type * * @param field to inspect * @param defaultType default type (override) * @return index collection type for given field */ private static IndexCollectionType getIndexCollectionType(Field field, IndexCollectionType defaultType) { if (!IndexCollectionType.DEFAULT.equals(defaultType)) { return defaultType; } if (Collection.class.isAssignableFrom(field.getType()) || List.class.isAssignableFrom(field.getType()) || Array.class.isAssignableFrom(field.getType()) || Set.class.isAssignableFrom(field.getType())) { return IndexCollectionType.LIST; } if (!Map.class.isAssignableFrom(field.getType())) { return defaultType; } return IndexCollectionType.MAPKEYS; }
/** * Generate Filter hashCode. */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((begin == null) ? 0 : begin.hashCode()); result = prime * result + ((end == null) ? 0 : end.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((colType == null) ? 0 : colType.hashCode()); result = prime * result + valType; return result; } }
collectionType = IndexCollectionType.valueOf(value); } catch (IllegalArgumentException e) { collectionType = IndexCollectionType.DEFAULT;
dataBuffer[dataOffset++] = (byte)type.ordinal();
params.namespace, params.set, binName, indexType.toString());
dataBuffer[dataOffset++] = (byte)type.ordinal();
public Scanner<T> filter(String nameOfField, boolean fieldValue) { setIndexName(type, setName, namespace, nameOfField); if (!boolean.class.isAssignableFrom(field.getType()) && !Boolean.class.isAssignableFrom(field.getType())) { throw new SpikeifyError("Can't query with boolean filter on: " + type + "#" + nameOfField + ", not a boolean field!"); } IndexCollectionType collectionType = IndexingService.getIndexCollectionType(type, field.getName()); if (IndexCollectionType.DEFAULT.equals(collectionType)) { return setFilters(Filter.equal(fieldName, fieldValue ? 1 : 0)); } return setFilters(Filter.contains(fieldName, collectionType, fieldValue ? 1 : 0)); }
/** * Generate Filter hashCode. */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((begin == null) ? 0 : begin.hashCode()); result = prime * result + ((end == null) ? 0 : end.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((colType == null) ? 0 : colType.hashCode()); result = prime * result + valType; return result; } }
public Scanner<T> filter(String nameOfField, String fieldValue) { setIndexName(type, setName, namespace, nameOfField); IndexCollectionType collectionType = IndexingService.getIndexCollectionType(type, field.getName()); if (IndexCollectionType.DEFAULT.equals(collectionType)) { return setFilters(Filter.equal(fieldName, fieldValue)); } return setFilters(Filter.contains(fieldName, collectionType, fieldValue)); }
public Scanner<T> filter(String nameOfField, long begin, long end) { setIndexName(type, setName, namespace, nameOfField); IndexCollectionType collectionType = IndexingService.getIndexCollectionType(type, field.getName()); if (IndexCollectionType.DEFAULT.equals(collectionType)) { return setFilters(Filter.range(fieldName, begin, end)); } return setFilters(Filter.range(fieldName, collectionType, begin, end)); }
public Scanner<T> filter(String nameOfField, long fieldValue) { setIndexName(type, setName, namespace, nameOfField); IndexCollectionType collectionType = IndexingService.getIndexCollectionType(type, field.getName()); if (IndexCollectionType.DEFAULT.equals(collectionType)) { return setFilters(Filter.equal(fieldName, fieldValue)); } return setFilters(Filter.contains(fieldName, collectionType, fieldValue)); }
if (!collectionType.equals(found.collectionType)) { throw new SpikeifyError("Index: '" + indexName + "' can not change index collection type from: '" + found.collectionType + "', to: '" + collectionType + "', remove index manually: " + "DROP INDEX " + sfy.getNamespace() + "." + getSetName(clazz) + " " + indexName);