view src/main/java/de/mpiwg/indexmeta/services/DataProvider.java @ 8:9ce7979fd037

Implementation Data Provider
author Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
date Wed, 24 Apr 2013 10:34:23 +0200
parents bc57f2660b0f
children
line wrap: on
line source

package de.mpiwg.indexmeta.services;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import de.mpiwg.indexmeta.bo.Contextualization;

public class DataProvider {

	protected static Logger logger = Logger.getLogger(DataProvider.class);
	
	public DataProvider(){
		logger.info("Starting DataProvider *********");
	}
	
	private PersistentService ps = new PersistentService();
	
	public List<Contextualization> getCtxByIndexMetaId(String indexMetaId){
		//QuadKey(indexMetaId, type, remoteId, id)
		return ps.getCtxMap().getValuesByFirstKey(indexMetaId);
	}
	
	public List<Contextualization> getCtxByType(String type){
		//QuadKey(indexMetaId, type, remoteId, id)
		return ps.getCtxMap().getValuesBySecondKey(type);
	}
	
	public List<Contextualization> getCtxByRemoteId(String remoteId){
		//QuadKey(indexMetaId, type, remoteId, id)
		return ps.getCtxMap().getValuesByThirdKey(remoteId);
	}
	
	public Contextualization getCtx(String indexMetaId, String elementId) throws Exception{
		List<Contextualization> rs = new ArrayList<Contextualization>();
		
		for(Contextualization ctx : ps.getCtxMap().getValuesByFirstKey(indexMetaId)){
			if(ctx.getElementId().equals(elementId)){
				rs.add(ctx);
			}
		}
		if(rs.isEmpty())
			return null;
		else if(rs.size() == 1)
			return rs.get(0);
		else
			throw new Exception("For indexMetaId=" + indexMetaId + " and elementId=" + elementId + " there are more than one element in DB.");
	}
	
	public Contextualization getCtx(Long id){
		return ps.getCtxMap().getValuesByOwnKey(id);
	}
	
	public void saveCtx(Contextualization ctx){
		ps.saveCtx(ctx);
	}
	
}