List of usage examples for com.mongodb.client.model IndexOptions collation
Collation collation
To view the source code for com.mongodb.client.model IndexOptions collation.
Click Source Link
From source file:org.springframework.data.mongodb.core.IndexConverters.java
License:Apache License
private static Converter<IndexDefinition, IndexOptions> getIndexDefinitionIndexOptionsConverter() { return indexDefinition -> { Document indexOptions = indexDefinition.getIndexOptions(); IndexOptions ops = new IndexOptions(); if (indexOptions.containsKey("name")) { ops = ops.name(indexOptions.get("name").toString()); }/*from w w w .ja v a 2 s. c om*/ if (indexOptions.containsKey("unique")) { ops = ops.unique((Boolean) indexOptions.get("unique")); } if (indexOptions.containsKey("sparse")) { ops = ops.sparse((Boolean) indexOptions.get("sparse")); } if (indexOptions.containsKey("background")) { ops = ops.background((Boolean) indexOptions.get("background")); } if (indexOptions.containsKey("expireAfterSeconds")) { ops = ops.expireAfter((Long) indexOptions.get("expireAfterSeconds"), TimeUnit.SECONDS); } if (indexOptions.containsKey("min")) { ops = ops.min(((Number) indexOptions.get("min")).doubleValue()); } if (indexOptions.containsKey("max")) { ops = ops.max(((Number) indexOptions.get("max")).doubleValue()); } if (indexOptions.containsKey("bits")) { ops = ops.bits((Integer) indexOptions.get("bits")); } if (indexOptions.containsKey("bucketSize")) { ops = ops.bucketSize(((Number) indexOptions.get("bucketSize")).doubleValue()); } if (indexOptions.containsKey("default_language")) { ops = ops.defaultLanguage(indexOptions.get("default_language").toString()); } if (indexOptions.containsKey("language_override")) { ops = ops.languageOverride(indexOptions.get("language_override").toString()); } if (indexOptions.containsKey("weights")) { ops = ops.weights((org.bson.Document) indexOptions.get("weights")); } for (String key : indexOptions.keySet()) { if (ObjectUtils.nullSafeEquals("2dsphere", indexOptions.get(key))) { ops = ops.sphereVersion(2); } } if (indexOptions.containsKey("partialFilterExpression")) { ops = ops.partialFilterExpression((org.bson.Document) indexOptions.get("partialFilterExpression")); } if (indexOptions.containsKey("collation")) { ops = ops.collation(fromDocument(indexOptions.get("collation", Document.class))); } return ops; }; }
From source file:org.wso2.extension.siddhi.store.mongodb.util.MongoTableUtils.java
License:Open Source License
/** * Utility method which can be used to create an IndexModel. * * @param fieldName the attribute on which the index is to be created. * @param sortOrder the sort order of the index to be created. * @param indexOption json string of the options of the index to be created. * @return IndexModel./*from w w w .j a v a 2 s.c om*/ */ private static IndexModel createIndexModel(String fieldName, Integer sortOrder, String indexOption) { Document indexDocument = new Document(fieldName, sortOrder); if (indexOption == null) { return new IndexModel(indexDocument); } else { IndexOptions indexOptions = new IndexOptions(); Document indexOptionDocument; try { indexOptionDocument = Document.parse(indexOption); for (Map.Entry<String, Object> indexEntry : indexOptionDocument.entrySet()) { Object value = indexEntry.getValue(); switch (indexEntry.getKey()) { case "unique": indexOptions.unique(Boolean.parseBoolean(value.toString())); break; case "background": indexOptions.background(Boolean.parseBoolean(value.toString())); break; case "name": indexOptions.name(value.toString()); break; case "sparse": indexOptions.sparse(Boolean.parseBoolean(value.toString())); break; case "expireAfterSeconds": indexOptions.expireAfter(Long.parseLong(value.toString()), TimeUnit.SECONDS); break; case "version": indexOptions.version(Integer.parseInt(value.toString())); break; case "weights": indexOptions.weights((Bson) value); break; case "languageOverride": indexOptions.languageOverride(value.toString()); break; case "defaultLanguage": indexOptions.defaultLanguage(value.toString()); break; case "textVersion": indexOptions.textVersion(Integer.parseInt(value.toString())); break; case "sphereVersion": indexOptions.sphereVersion(Integer.parseInt(value.toString())); break; case "bits": indexOptions.bits(Integer.parseInt(value.toString())); break; case "min": indexOptions.min(Double.parseDouble(value.toString())); break; case "max": indexOptions.max(Double.parseDouble(value.toString())); break; case "bucketSize": indexOptions.bucketSize(Double.parseDouble(value.toString())); break; case "partialFilterExpression": indexOptions.partialFilterExpression((Bson) value); break; case "collation": DBObject collationOptions = (DBObject) value; Collation.Builder builder = Collation.builder(); for (String collationKey : collationOptions.keySet()) { String collationObj = value.toString(); switch (collationKey) { case "locale": builder.locale(collationObj); break; case "caseLevel": builder.caseLevel(Boolean.parseBoolean(collationObj)); break; case "caseFirst": builder.collationCaseFirst(CollationCaseFirst.fromString(collationObj)); break; case "strength": builder.collationStrength(CollationStrength.valueOf(collationObj)); break; case "numericOrdering": builder.numericOrdering(Boolean.parseBoolean(collationObj)); break; case "normalization": builder.normalization(Boolean.parseBoolean(collationObj)); break; case "backwards": builder.backwards(Boolean.parseBoolean(collationObj)); break; case "alternate": builder.collationAlternate(CollationAlternate.fromString(collationObj)); break; case "maxVariable": builder.collationMaxVariable(CollationMaxVariable.fromString(collationObj)); break; default: log.warn("Annotation 'IndexBy' for the field '" + fieldName + "' contains " + "unknown 'Collation' Option key : '" + collationKey + "'. Please " + "check your query and try again."); break; } } if (builder.build().getLocale() != null) { indexOptions.collation(builder.build()); } else { throw new MongoTableException("Annotation 'IndexBy' for the field '" + fieldName + "'" + " do not contain option for locale. Please check your query and try again."); } break; case "storageEngine": indexOptions.storageEngine((Bson) value); break; default: log.warn("Annotation 'IndexBy' for the field '" + fieldName + "' contains unknown option " + "key : '" + indexEntry.getKey() + "'. Please check your query and try again."); break; } } } catch (JsonParseException | NumberFormatException e) { throw new MongoTableException("Annotation 'IndexBy' for the field '" + fieldName + "' contains " + "illegal value(s) for index option. Please check your query and try again.", e); } return new IndexModel(indexDocument, indexOptions); } }