package eu.dnetlib.r2d2.neo4j.dao;

import com.google.common.collect.Iterables;

import eu.dnetlib.r2d2.neo4j.domain.AccessTime;
import eu.dnetlib.r2d2.neo4j.domain.Relationships;

public class Neo4jAccessTimeDao extends Neo4JDao<AccessTime> implements AccessTimeDao {
	
	public Neo4jAccessTimeDao() {
		super(Relationships._ACCESS_TIMES, Relationships._ACCESS_TIME, AccessTime.class.getName());
	}

	@Override
	public AccessTime getAccessTimeForBean(String beanId) {
		return Iterables.getOnlyElement(this.findRelatedNodes(beanId, Relationships.ACCESS_TIME), null);
	}

	@Override
	public void setAccessTimeForBean(String accessTimeId, String beanId) {
		AccessTime aTime = this.getAccessTimeForBean(beanId);
		
		if (aTime != null) {
			this.removeRelationship(accessTimeId, beanId, Relationships.ACCESS_TIME);
		}
		
		this.createRelationship(accessTimeId, beanId, Relationships.ACCESS_TIME);
	}
	
	@Override
	protected AccessTime createBean() {
		return new AccessTime();
	}
}