package com.buschmais.xo.impl.proxy.relation.object;
import com.buschmais.xo.impl.SessionContext;
import com.buschmais.xo.impl.proxy.common.object.AbstractDatastoreTypeToStringMethod;
import com.buschmais.xo.spi.datastore.*;
import com.buschmais.xo.spi.metadata.method.PrimitivePropertyMethodMetadata;
public class ToStringMethod<Entity, EntityMetadata extends DatastoreEntityMetadata<EntityDiscriminator>, EntityDiscriminator, Relation, RelationMetadata extends DatastoreRelationMetadata<RelationDiscriminator>, RelationDiscriminator>
extends AbstractDatastoreTypeToStringMethod<Relation> {
private final SessionContext<?, Entity, EntityMetadata, EntityDiscriminator, ?, Relation, RelationMetadata, RelationDiscriminator, ?> sessionContext;
public ToStringMethod(
SessionContext<?, Entity, EntityMetadata, EntityDiscriminator, ?, Relation, RelationMetadata, RelationDiscriminator, ?> sessionContext) {
this.sessionContext = sessionContext;
}
@Override
protected String getId(Relation datastoreType) {
return sessionContext.getDatastoreSession().getDatastoreRelationManager().getRelationId(datastoreType).toString();
}
@Override
protected Object getProperty(Relation datastoreType, PrimitivePropertyMethodMetadata propertyMethodMetadata) {
return sessionContext.getDatastoreSession().getDatastoreRelationManager().getProperty(datastoreType, propertyMethodMetadata);
}
@Override
protected TypeMetadataSet<?> getTypes(Relation datastoreType) {
DatastoreRelationManager<Entity, ?, Relation, RelationMetadata, RelationDiscriminator, ?> datastoreRelationManager = sessionContext
.getDatastoreSession().getDatastoreRelationManager();
DatastoreEntityManager<?, Entity, EntityMetadata, EntityDiscriminator, ?> datastoreEntityManager = sessionContext.getDatastoreSession()
.getDatastoreEntityManager();
Entity from = datastoreRelationManager.getFrom(datastoreType);
Entity to = datastoreRelationManager.getTo(datastoreType);
return sessionContext.getMetadataProvider().getRelationTypes(datastoreEntityManager.getEntityDiscriminators(from),
datastoreRelationManager.getRelationDiscriminator(datastoreType), datastoreEntityManager.getEntityDiscriminators(to));
}
}