protected static Set<Key> mapToKeys(Property property) throws JasDBStorageException { List<Value> values = property.getValues(); Set<Key> mappedKeys = new HashSet<>(values.size()); for(Value value : values) { mappedKeys.add(mapToKey(value)); } return mappedKeys; }
@Override public Object mapFromProperty(PropertyMetadata propertyMetadata, Property property) { EntityValue entityValue = (EntityValue) property.getFirstValue(); Entity embeddedEntity = entityValue.getValue(); List<Property> embeddedProperties = embeddedEntity.getProperties(); Map<String, Object> properties = new HashMap<>(); embeddedProperties.forEach(p -> { properties.put(p.getPropertyName(), p.getFirstValue().getValue()); }); return properties; } }
@Override public Object mapFromProperty(PropertyMetadata propertyMetadata, Property property) { return property.getFirstValueObject(); } }
if(property.hasValues()) { if(property.isMultiValue()) { generator.writeArrayFieldStart(property.getPropertyName()); } else { generator.writeFieldName(property.getPropertyName()); for(Value value : property.getValues()) { if(value instanceof LongValue) { generator.writeNumber(((LongValue) value).toLong()); if(property.isMultiValue()) { generator.writeEndArray();
assertTrue("Property should be long", property.getFirstValueObject() instanceof EmbeddedEntity); EntityValue value = (EntityValue) property.getFirstValue(); Entity embedEntity = value.toEntity(); String embeddedProperty = embedEntity.getProperty("embeddedProperty").getFirstValue().toString(); assertEquals("The id's should match", queryKey, embeddedProperty); } finally {
assertTrue(foundEntity.hasProperty("multiValueProperty")); assertTrue(foundEntity.hasProperty("integerProperty")); assertEquals(new Long(100), foundEntity.getProperty("simpleProperty1").getFirstValueObject()); assertEquals(3, foundEntity.getProperty("multiValueProperty").getValues().size()); assertEquals("value1", foundEntity.getProperty("multiValueProperty").getValues().get(0).getValue()); assertEquals("value2", foundEntity.getProperty("multiValueProperty").getValues().get(1).getValue()); assertEquals("value3", foundEntity.getProperty("multiValueProperty").getValues().get(2).getValue()); assertEquals(new Long(200), foundEntity.getProperty("integerProperty").getFirstValueObject()); Object embedded = foundEntity.getProperty("embedded").getFirstValueObject(); assertNotNull(embedded); assertEquals("Embedded entity should be of type SimpleEntity", EmbeddedEntity.class, embedded.getClass()); assertTrue(embeddedEntity.hasProperty("embeddedString")); assertTrue(embeddedEntity.hasProperty("embeddedMultivalue")); assertEquals(50L, embeddedEntity.getProperty("embeddedProperty1").getValues().get(0).getValue()); assertEquals(60L, embeddedEntity.getProperty("embeddedProperty1").getValues().get(1).getValue()); assertEquals(70L, embeddedEntity.getProperty("embeddedProperty1").getValues().get(2).getValue()); assertEquals("simpleStringValue", embeddedEntity.getProperty("embeddedString").getFirstValueObject()); assertEquals("emValue1", embeddedEntity.getProperty("embeddedMultivalue").getValues().get(0).getValue()); assertEquals("emValue2", embeddedEntity.getProperty("embeddedMultivalue").getValues().get(1).getValue()); assertEquals("emValue3", embeddedEntity.getProperty("embeddedMultivalue").getValues().get(2).getValue());
@Test public void testPersistMultiValue() throws Exception { DBSession session = sessionFactory.createSession(); EntityBag bag = session.createOrGetBag("testbag"); try { Entity entity = new SimpleEntity(); entity.addProperty("field1", "value1"); entity.addProperty("field1", "value2"); entity.addProperty("field1", "value3"); entity.addProperty("number", 100L); entity.addProperty("number", 500L); bag.addEntity(entity); String entityId = entity.getInternalId(); entity = bag.getEntity(entityId); Property property = entity.getProperty("field1"); Assert.assertNotNull(property); assertEquals("The object should be multivalue", true, property.isMultiValue()); assertEquals("There should be three properties", 3, property.getValues().size()); assertEquals("Unexpected value", "value1", property.getValues().get(0).getValue()); assertEquals("Unexpected value", "value2", property.getValues().get(1).getValue()); assertEquals("Unexpected value", "value3", property.getValues().get(2).getValue()); property = entity.getProperty("number"); assertEquals("The object should be multivalue", true, property.isMultiValue()); assertEquals("There should be three properties", 2, property.getValues().size()); assertEquals("Unexpected value", 100L, property.getValues().get(0).getValue()); assertEquals("Unexpected value", 500L, property.getValues().get(1).getValue()); } finally { JasDBMain.shutdown(); } }
protected static Key mapToKey(Property property) throws JasDBStorageException { return mapToKey(property.getFirstValue()); }
private void addValueToProperty(String propertyName, boolean isCollection, Value value) { Property mvProperty; if(properties.containsKey(propertyName)) { mvProperty = properties.get(propertyName); } else { mvProperty = new MultivalueProperty(propertyName, isCollection); properties.put(propertyName, mvProperty); } mvProperty.addValue(value); }
@Override public Object mapFromProperty(PropertyMetadata propertyMetadata, Property property) { return property.getValueObjects(); } }
/** * This allows directly adding a constructed Property object to the entity. If any existing properties * exist with the same name these are overriden. * * @param property The property object * @return The entity the property has been added to */ @Override public SimpleEntity addProperty(Property property) { properties.put(property.getPropertyName(), property); return this; }
@Override public boolean isMultiValue(String propertyName) { return properties.containsKey(propertyName) && properties.get(propertyName).isMultiValue(); }
assertTrue("Property should be long", property.getFirstValueObject() instanceof EmbeddedEntity); EntityValue value = (EntityValue) property.getFirstValue(); Entity embedEntity = value.toEntity(); String embeddedProperty = embedEntity.getProperty("embeddedProperty").getFirstValue().toString(); assertEquals("The id's should match", queryKey, embeddedProperty); } finally {
List<String> getEntityValue(List<Entity> entities, final String property) { return Lists.transform(entities, entity -> { assert entity != null; return entity.getProperty(property).getFirstValue().toString(); }); }
@Override public Property mapToProperty(String propertyName, Object value) { Property property = new MultivalueProperty(propertyName); property.addValue(mapToValue(value)); return property; }
@Override public <T> List<T> getValues(String propertyName) { Property property = getProperty(propertyName); if(property != null) { return property.getValueObjects(); } return null; }
@Override public Object mapFromProperty(PropertyMetadata propertyMetadata, Property property) { return property.getFirstValueObject(); } }
public static GrantObject fromEntity(Entity entity) { String grantObject = entity.getValue(Constants.GRANT_OBJECT).toString(); Map<String, Grant> userGrants = new ConcurrentHashMap<>(); Property grantsProperty = entity.getProperty(Constants.GRANTS); for(Value grantValue : grantsProperty.getValues()) { EntityValue entityValue = (EntityValue) grantValue; String grantUser = entityValue.toEntity().getValue(Constants.GRANT_USER).toString(); String grantMode = entityValue.toEntity().getValue(Constants.GRANT_MODE).toString(); userGrants.put(grantUser, new GrantMeta(grantUser, AccessMode.fromMode(grantMode))); } return new GrantObjectMeta(grantObject, userGrants); }
@Test public void testCreateAndInsertEntities() throws JasDBException, IOException { DBSession session = sessionFactory.createSession(); session.addInstance(MY_INSTANCE); EntityBag bag = session.createOrGetBag(MY_INSTANCE, BAG_1); bag.addEntity(new SimpleEntity().addProperty("test", "value")); QueryResult result = bag.getEntities(); assertThat(result.size(), is(1l)); Entity entity = result.next(); assertThat(entity, notNullValue()); assertThat(entity.getProperty("test").getFirstValue().toString(), is("value")); }
@Override public Property mapToProperty(String propertyName, Object value) { Property property = new MultivalueProperty(propertyName); property.addValue(mapToValue(value)); return property; }