package com.buschmais.xo.impl.proxy.entity.object;
import java.util.Set;
import com.buschmais.xo.impl.SessionContext;
import com.buschmais.xo.impl.proxy.common.object.AbstractDatastoreTypeToStringMethod;
import com.buschmais.xo.spi.datastore.DatastoreEntityMetadata;
import com.buschmais.xo.spi.datastore.TypeMetadataSet;
import com.buschmais.xo.spi.metadata.method.PrimitivePropertyMethodMetadata;
import com.buschmais.xo.spi.metadata.type.EntityTypeMetadata;
public class ToStringMethod<Entity, EntityMetadata extends DatastoreEntityMetadata<EntityDiscriminator>, EntityDiscriminator>
extends AbstractDatastoreTypeToStringMethod<Entity> {
private final SessionContext<?, Entity, EntityMetadata, EntityDiscriminator, ?, ?, ?, ?, ?> sessionContext;
public ToStringMethod(SessionContext<?, Entity, EntityMetadata, EntityDiscriminator, ?, ?, ?, ?, ?> sessionContext) {
this.sessionContext = sessionContext;
}
@Override
protected String getId(Entity datastoreType) {
return sessionContext.getDatastoreSession().getDatastoreEntityManager().getEntityId(datastoreType).toString();
}
@Override
protected Object getProperty(Entity datastoreType, PrimitivePropertyMethodMetadata propertyMethodMetadata) {
return sessionContext.getDatastoreSession().getDatastoreEntityManager().getProperty(datastoreType, propertyMethodMetadata);
}
protected TypeMetadataSet<EntityTypeMetadata<EntityMetadata>> getTypes(Entity entity) {
Set<EntityDiscriminator> discriminators = sessionContext.getDatastoreSession().getDatastoreEntityManager().getEntityDiscriminators(entity);
return sessionContext.getMetadataProvider().getTypes(discriminators);
}
}