All Downloads are FREE. Search and download functionalities are using the official Maven repository.

prompto.store.datomic.StoredDocument Maven / Gradle / Ivy

package prompto.store.datomic;

import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

import prompto.error.PromptoError;
import prompto.store.Family;
import prompto.store.IStored;
import datomic.Entity;

public class StoredDocument implements IStored {

	Entity entity;
	
	public StoredDocument(Entity entity) {
		this.entity = entity;
	}

	@Override
	public Object getDbId() {
		return entity.get(Constants.Db.ID.dbName());
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List getCategories() {
		Object categories = entity.get(":category/ordered");
		if(categories instanceof Collection)
			return ((Collection)categories).stream()
						.map(OrderedCategory::new)
						.sorted()
						.map(OrderedCategory::category)
						.collect(Collectors.toList());
		else 
			throw new RuntimeException("Can't read categoies from " + categories.getClass().getName());
	}


	@Override
	public boolean hasData(String fieldName) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public Object getRawData(String fieldName) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Object getData(String fieldName) throws PromptoError {
		// TODO keep name/type in cache
		Object familyName = entity.get(":" + fieldName + "/family");
		if(familyName instanceof String) {
			Family family = Family.valueOf((String)familyName);
			FamilyHelper helper = FamilyHelper.HELPERS.get(family);
			return helper.nativeToPrompto(entity, fieldName);
		}
		return entity.get(":" + fieldName);
	}

	@Override
	public Set getNames() throws PromptoError {
		// TODO Auto-generated method stub
		return null;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy