@Test public void testBooleanArray() { final ArrayField<Boolean> array = new ArrayField<>( "bools" ); array.add( true ); array.add( true ); array.add( false ); array.add( true ); // 3 are duplicates, we expect only 2 values testPrimitiveArray( array, IndexingUtils.FIELD_BOOLEAN, 2 ); }
array.getValue().forEach( item -> uniqueInputSet.add(item)); List<T> uniqueInputList = new ArrayList<>(); uniqueInputList.addAll(uniqueInputSet); ArrayField<T> uniqueArrayField = new ArrayField<>( array.getName(), uniqueInputList); for ( int i = 0; i < uniqueArrayField.size(); i++ ) { final EntityField field = fields.get( i ); assertEquals( uniqueArrayField.getName(), field.get( IndexingUtils.FIELD_NAME ) ); assertTrue( uniqueArrayField.getValue().contains( field.get( indexType ) ) );
UUIDField uuidField = new UUIDField( "uuid", UUIDGenerator.newTimeUUID() ); ArrayField arrayField = new ArrayField("array"); arrayField.add("item1"); arrayField.add("item2"); Field<ArrayField> arrayFieldReturned = returned.getEntity().get().getField( arrayField.getName() );
private ListField processListValue(String fieldName, List list ) { if (list.isEmpty()) { return new ArrayField( fieldName ); } final List<Object> returnList = new ArrayList<>(); list.forEach( sample -> { if ( sample instanceof Map ) { returnList.add( fromMap( (Map<String, Object>) sample, false ) ); } else if ( sample instanceof List ) { returnList.add( processListForListField( fieldName, (List) sample ) ); } else { returnList.add( sample ); } }); return new ArrayField<>( fieldName, returnList); }
private static ListField listToListField( String fieldName, List list ) { if (list.isEmpty()) { return new ArrayField( fieldName ); } Object sample = list.get(0); if ( sample instanceof Map ) { return new ArrayField( fieldName, processListForField( list )); } else if ( sample instanceof List ) { return new ArrayField<List>( fieldName, processListForField( list )); } else if ( sample instanceof String ) { return new ArrayField<String>( fieldName, (List<String>)list ); } else if ( sample instanceof Boolean ) { return new ArrayField<Boolean>( fieldName, (List<Boolean>)list ); } else if ( sample instanceof Integer ) { return new ArrayField<Integer>( fieldName, (List<Integer>)list ); } else if ( sample instanceof Double ) { return new ArrayField<Double>( fieldName, (List<Double>)list ); } else if ( sample instanceof Long ) { return new ArrayField<Long>( fieldName, (List<Long>)list ); } else { throw new RuntimeException("Unknown type " + sample.getClass().getName()); } }
@Test public void testStringArray() { final ArrayField<String> array = new ArrayField<>( "strings" ); array.add( "one" ); array.add( "two" ); array.add( "three" ); // all unique values, we expect 3 values testPrimitiveArray( array, IndexingUtils.FIELD_STRING, 3 ); }
entity1.setField( new ArrayField<>( "arrayofnulls", listOfNulls) ); entity1.setField( new ArrayField<>( "arrayofmixednulls", listOfMixedNulls) ); entity1.setField( new NullField("nullfield"));
@Test public void testIntArray() { final ArrayField<Integer> array = new ArrayField<>( "ints" ); array.add( 1 ); array.add( 2 ); array.add( 3 ); // all unique values, we expect 3 values testPrimitiveArray( array, IndexingUtils.FIELD_LONG, 3 ); }
entity2.setField(new ArrayField<>("testfield", list)); entity2.setField(new IntegerField("ordinal", 1));
@Test public void testFloatArray() { final ArrayField<Float> array = new ArrayField<>( "floats" ); array.add( 1.0f ); array.add( 2.0f ); array.add( 3.0f ); // all unique values, we expect 3 values testPrimitiveArray( array, IndexingUtils.FIELD_DOUBLE, 3 ); }
@Test public void testDoubleArray() { final ArrayField<Double> array = new ArrayField<>( "doubles" ); array.add( 1.0d ); array.add( 2.0d ); array.add( 3.0d ); // all unique values, we expect 3 values testPrimitiveArray( array, IndexingUtils.FIELD_DOUBLE, 3 ); }
@Test public void testLongArray() { final ArrayField<Long> array = new ArrayField<>( "longs" ); array.add( 1l ); array.add( 2l ); array.add( 3l ); // all unique values, we expect 3 values testPrimitiveArray( array, IndexingUtils.FIELD_LONG, 3 ); }
public void testObjectNestedInArray() { final ArrayField<Object> array = new ArrayField<>("array"); final ArrayField<Object> nestedArray1 = new ArrayField<>("nestedArray"); nestedArray1.add("1"); final ArrayField<Object> objectArray = new ArrayField<>("nestedArrayInObject"); final EntityObject nestedObject2 = new EntityObject(); nestedObject2.setField(new StringField("nestedKey", "nestedValue")); objectArray.add(nestedObject2); nestedObject1.setField(objectArray); array.add(nestedArray1); array.add(nestedObject1);
final ArrayField<String> subArray = new ArrayField<>( "subArray" ); subArray.add( "test2" ); final ArrayField<Object> array = new ArrayField<>( "array" ); array.add( subArray ); array.add( nested1 );
/** * Objects nested within arrays are allowed to be indexed (just not n+1 nested arrays themselves) */ @Test public void testNullsWithinArray() { final ArrayField<Object> array = new ArrayField<>("array"); // add a couple null values array.add(null); array.add("test"); // this should get indexed Entity rootEntity = new Entity( "test" ); rootEntity.setField( array ); final UUID version = UUIDGenerator.newTimeUUID(); EntityUtils.setVersion( rootEntity, version ); final ApplicationScope scope = new ApplicationScopeImpl( createId( "application" ) ); final IndexEdge indexEdge = new IndexEdgeImpl( createId( "source" ), "testEdgeType", SearchEdge.NodeType.SOURCE, 1000 ); final Map<String, Object> entityMap = EntityToMapConverter.convert( scope, indexEdge, rootEntity ); final Set<EntityField> fields = ( Set<EntityField> ) entityMap.get( IndexingUtils.ENTITY_FIELDS ); List<EntityField> fieldsArray = new ArrayList<>(); fieldsArray.addAll(fields); assertEquals( 2, fields.size() ); final EntityField field = fieldsArray.get( 0 ); final EntityField field1 = fieldsArray.get( 1 ); // the fields get re-sorted on array to list conversion assertEquals( "test", field.get( IndexingUtils.FIELD_STRING ) ); assertEquals( null, field1.get( IndexingUtils.FIELD_NULL ) ); }
final ArrayField<EntityObject> array = new ArrayField<>( "array" ); array.add( nested1 );
entity.setField( new StringField( "description", "I'm a longer description" ) ); ArrayField<Long> array = new ArrayField<>("longs"); array.add( 9315321008910l ); array.add( 9315321009016l ); array.add( 9315321009115l ); array.add( 9315321009313l ); array.add( 9315321009320l ); array.add( 9315321984955l );