@Override public boolean apply(@Nullable Entity input) { return (input != null) && input.getType().equals(type); } };
/** * Create a new entity builder that is initialized with a copy of an entity. * @param e The entity. * @return An entity builder initialized to build a copy of {@code e}. */ public static EntityBuilder copyBuilder(Entity e) { EntityBuilder eb = newBuilder(e.getType(), e.getId()); for (TypedName a: e.getTypedAttributeNames()) { eb.setAttribute(a, e.get(a)); } return eb; }
@Test public void testBareEntity() { EntityBuilder eb = Entities.newBuilder(CommonTypes.USER, 42); Entity e = eb.build(); assertThat(e, notNullValue()); assertThat(e.getType(), equalTo(CommonTypes.USER)); assertThat(e.getId(), equalTo(42L)); assertThat(e.getTypedAttributeNames(), contains((TypedName) CommonAttributes.ENTITY_ID)); assertThat(e.getAttributeNames(), contains("id")); assertThat(e.get(CommonAttributes.ENTITY_ID), equalTo(42L)); assertThat(e.get("id"), equalTo((Object) 42L)); }
/** * Construct a new collection entity source. * @param n The source name. * @param es The entities. */ public CollectionEntitySource(String n, Collection<? extends Entity> es, Map<String,Object> meta) { name = n; entities = ImmutableList.copyOf(es); ImmutableSet.Builder<EntityType> tb = ImmutableSet.builder(); for (Entity e: entities) { tb.add(e.getType()); } types = tb.build(); metadata = ImmutableMap.copyOf(meta); }
@Test public void testBareSetters() { EntityBuilder eb = Entities.newBuilder(CommonTypes.USER) .setId(42); Entity e = eb.build(); assertThat(e, notNullValue()); assertThat(e.getType(), equalTo(CommonTypes.USER)); assertThat(e.getId(), equalTo(42L)); assertThat(e.getTypedAttributeNames(), contains((TypedName) CommonAttributes.ENTITY_ID)); assertThat(e.getAttributeNames(), contains("id")); assertThat(e.hasAttribute("user"), equalTo(false)); assertThat(e.hasAttribute(CommonAttributes.USER_ID), equalTo(false)); }
/** * Add an entity to the DAO. * @param e The entity to add * @return The DAO builder (for chaining). */ public EntityCollectionDAOBuilder addEntity(Entity e) { Preconditions.checkState(entitySets != null, "build() already called"); EntityType type = e.getType(); EntityCollectionBuilder bld = findBuilder(type); bld.add(e); return this; }
@Test public void testAttributeSetters() { EntityBuilder eb = Entities.newBuilder(CommonTypes.USER) .setAttribute(CommonAttributes.ENTITY_ID, 42L); Entity e = eb.build(); assertThat(e, notNullValue()); assertThat(e.getType(), equalTo(CommonTypes.USER)); assertThat(e.getId(), equalTo(42L)); assertThat(e.getTypedAttributeNames(), contains((TypedName) CommonAttributes.ENTITY_ID)); assertThat(e.getAttributeNames(), contains("id")); assertThat(e.hasAttribute("user"), equalTo(false)); assertThat(e.hasAttribute(CommonAttributes.USER_ID), equalTo(false)); assertThat(e.get(CommonAttributes.ENTITY_ID), equalTo(42L)); }
@Override public EntityCollectionBuilder add(Entity e, boolean replace) { Preconditions.checkState(store != null, "build() already called"); Preconditions.checkArgument(e.getType().equals(type)); if (!replace && store.containsKey(e.getId())) { return this; } store.add(e); hasher.putInt(e.hashCode()); for (EntityIndexBuilder ib: indexBuilders.values()) { ib.add(e); } return this; }
@Test public void testBasicEntity() { Entity e = Entities.newBuilder(CommonTypes.USER, 42) .setAttribute(CommonAttributes.NAME, "HACKEM MUCHE") .build(); assertThat(e, notNullValue()); assertThat(e.getType(), equalTo(CommonTypes.USER)); assertThat(e.getId(), equalTo(42L)); assertThat(e.getTypedAttributeNames(), containsInAnyOrder((TypedName) CommonAttributes.NAME, CommonAttributes.ENTITY_ID)); assertThat(e.getAttributeNames(), containsInAnyOrder("name", "id")); assertThat(e.get("name"), equalTo((Object) "HACKEM MUCHE")); assertThat(e.get(CommonAttributes.NAME), equalTo("HACKEM MUCHE")); assertThat(e.hasAttribute("name"), equalTo(true)); assertThat(e.hasAttribute("user"), equalTo(false)); assertThat(e.hasAttribute(CommonAttributes.NAME), equalTo(true)); assertThat(e.hasAttribute(CommonAttributes.USER_ID), equalTo(false)); assertThat(e.get(CommonAttributes.ENTITY_ID), equalTo(42L)); } }
/** * Determine whether this query matches the specified entity. * @param entity The entity to test. * @return The entity. */ public boolean matches(Entity entity) { if (!entity.getType().equals(entityType)) { return false; } for (Attribute<?> attr: filterFields) { Object val = entity.maybeGet(attr.getTypedName()); if (!attr.getValue().equals(val)) { return false; } } return true; } }
@Override public boolean equals(Object obj) { if (obj == this) { return true; } else if (obj instanceof Entity) { Entity oe = (Entity) obj; return getType().equals(oe.getType()) && getId() == oe.getId() && asMap().equals(oe.asMap()); } else { return false; } }
EntityBuilder builder = null; try { builder = ctor.get().newInstance(e.getType()); } catch (IllegalAccessException | InstantiationException ex) { throw new VerifyException(ctor.get() + " cannot be instantiated", ex);
for (Entity e: data) { builder.addEntity(e); types.add(e.getType());
@Test public void testBareEntity() { JSONEntityFormat fmt = new JSONEntityFormat(); fmt.setEntityType(CommonTypes.USER); assertThat(fmt.getAttributes(), nullValue()); LineEntityParser lep = fmt.makeParser(Collections.EMPTY_LIST); Entity res = lep.parse("{\"$id\": 203810}"); assertThat(res, notNullValue()); assertThat(res.getId(), equalTo(203810L)); assertThat(res.getType(), equalTo(CommonTypes.USER)); assertThat(res, equalTo(Entities.create(CommonTypes.USER, 203810))); }
@Test public void testConfigureItemJSON() throws IOException, URISyntaxException { URI baseURI = TextEntitySourceTest.class.getResource("header-ratings.csv").toURI(); JsonNode node = reader.readTree("{\"file\": \"items.json\", \"format\": \"json\", \"entity_type\": \"item\"}"); TextEntitySource fr = TextEntitySource.fromJSON("test", node, baseURI); try (ObjectStream<Entity> stream = fr.openStream()) { Entity first = stream.readObject(); assertThat(first.getType(), equalTo(CommonTypes.ITEM)); assertThat(first.getId(), equalTo(42L)); assertThat(first.get(CommonAttributes.ENTITY_ID), equalTo(42L)); assertThat(first.get(CommonAttributes.NAME), equalTo("woozle")); Entity second = stream.readObject(); assertThat(second.getType(), equalTo(CommonTypes.ITEM)); assertThat(second.getId(), equalTo(37L)); assertThat(second.get(CommonAttributes.ENTITY_ID), equalTo(37L)); assertThat(second.get(CommonAttributes.NAME), equalTo("heffalump")); assertThat(stream.readObject(), nullValue()); } }
assertThat(first.getType(), equalTo(EntityType.forName("rating"))); assertThat(first.getId(), equalTo(1L)); assertThat(first.get(CommonAttributes.ENTITY_ID), equalTo(1L)); assertThat(second.getType(), equalTo(EntityType.forName("rating"))); assertThat(second.getId(), equalTo(2L)); assertThat(second.get(CommonAttributes.ENTITY_ID), equalTo(2L));
Entity first = stream.readObject(); assertThat(first, instanceOf(Rating.class)); assertThat(first.getType(), equalTo(EntityType.forName("rating"))); assertThat(first.getId(), equalTo(101L)); assertThat(first.get(CommonAttributes.ENTITY_ID), equalTo(101L)); assertThat(second.getType(), equalTo(EntityType.forName("rating"))); assertThat(second.getId(), equalTo(109L)); assertThat(second.get(CommonAttributes.ENTITY_ID), equalTo(109L));
Entity first = stream.readObject(); assertThat(first, instanceOf(Rating.class)); assertThat(first.getType(), equalTo(EntityType.forName("rating"))); assertThat(first.getId(), equalTo(1L)); assertThat(first.get(CommonAttributes.ENTITY_ID), equalTo(1L)); assertThat(second.getType(), equalTo(EntityType.forName("rating"))); assertThat(second.getId(), equalTo(2L)); assertThat(second.get(CommonAttributes.ENTITY_ID), equalTo(2L));
assertThat(first.getType(), equalTo(EntityType.forName("rating"))); assertThat(first.getId(), equalTo(101L)); assertThat(first.get(CommonAttributes.ENTITY_ID), equalTo(101L)); assertThat(second.getType(), equalTo(EntityType.forName("rating"))); assertThat(second.getId(), equalTo(109L)); assertThat(second.get(CommonAttributes.ENTITY_ID), equalTo(109L));
/** * Add an entity to the DAO. * @param e The entity to add * @return The DAO builder (for chaining). */ public EntityCollectionDAOBuilder addEntity(Entity e) { Preconditions.checkState(entitySets != null, "build() already called"); EntityType type = e.getType(); EntityCollectionBuilder bld = findBuilder(type); bld.add(e); return this; }