/*
* Seldon -- open source prediction engine
* =======================================
*
* Copyright 2011-2015 Seldon Technologies Ltd and Rummble Ltd (http://www.seldon.io/)
*
* ********************************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* ********************************************************************************************
*/
package io.seldon.general;
import io.seldon.api.resource.ConsumerBean;
import io.seldon.general.jdo.SqlItemPeer;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
public abstract class ItemPeer {
public abstract Item getItem(long itemId);
public abstract Item getItem(String itemId);
public abstract Collection<Item> getAlphabeticItems(int limit,int dimension,ConsumerBean cb);
public abstract Collection<Item> getItems(int limit,int dimension,ConsumerBean cb);
public abstract Collection<Item> getItems(int skip,int limit);
public abstract Collection<Item> getRecentItems(int limit,int dimension,ConsumerBean cb);
public abstract Integer[] getAttributes(int itemId);
public abstract String[] getAttributesNames(int itemId);
public abstract Collection<String> getItemAttributesNameByAttrName(long itemId,String attrName);
public abstract int getDimension(int attr,int val);
public abstract int getDimension(String attrName,String valName);
public abstract Map<Integer,Integer> getItemAttributes(long id);
public abstract Map<String,String> getItemAttributesName(long id);
public abstract double getItemAvgRating(long itemId, int dimension);
public abstract Collection<Dimension> getDimensions();
public abstract Collection<Integer> getItemDimensions(long id);
public abstract Item saveOrUpdate(final Item item, ConsumerBean consumerBean);
//TODO if adding an item with same client_item_id replace the previous element in the db instead of duplicating
public abstract Item addItem(Item i, ConsumerBean c);
public abstract boolean addItemAttribute(long itemId, int itemType, Map<Integer,Integer> attributes, ConsumerBean c);
public abstract boolean addItemAttributeNames(long itemId, int itemType, Map<String,String> attributes,ConsumerBean c);
public abstract Collection<Item> getItemsByName(String name, int limit, int type,ConsumerBean cb);
public abstract ItemAttr getItemAttr(int itemType, String attrName);
public abstract ItemType getItemType(String name);
public abstract ItemType getItemType(int typeId);
public abstract Collection<ItemDemographic> getItemDemographics(long itemId);
public abstract Collection<Item> getItemsFromUserActions(long user_id,String action_type,int limit);
public abstract Collection<ItemType> getItemTypes();
public abstract Collection<String> getItemSemanticAttributes(long itemId);
public abstract long getMinItemId(Date after,Integer type,ConsumerBean c);
public abstract List<Long> getRecentItemIds(Set<Integer> dimensions,int limit,ConsumerBean c);
public abstract List<Long> getRecentItemIdsTwoDimensions(Set<Integer> dimensions,int dimension2,int limit,ConsumerBean c);
public abstract Map<Long,List<String>> getRecentItemTags(Set<Long> ids,int attrId,String table);
public abstract List<Long> getRecentItemIdsWithTags(int tagAttrId,Set<String> tags, int limit);
public abstract Integer getDimensionForAttrName(long itemId,String name);
public abstract List<SqlItemPeer.ItemAndScore> retrieveMostPopularItems(int numItems, Set<Integer> dimensions);
public abstract Map<String,Integer> getDimensionIdsForItem(long itemId);
}