/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.sa.model.dao; import com.emc.storageos.db.client.constraint.NamedElementQueryResultList.NamedElement; import com.emc.storageos.db.client.model.DataObject; import com.emc.storageos.db.client.model.DataObjectWithACLs; import com.emc.storageos.security.authorization.PermissionsKey; import com.netflix.astyanax.connectionpool.exceptions.ConnectionException; import java.net.URI; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; /** * @author Chris Dail */ public interface DBClientWrapper { public <T extends DataObject> List<URI> findAllIds(Class<T> clazz) throws DataAccessException; public <T extends DataObject> T findById(Class<T> clazz, URI id) throws DataAccessException; public <T extends DataObject> List<T> findByIds(Class<T> clazz, List<URI> ids) throws DataAccessException; public <T extends DataObject> List<NamedElement> findBy(Class<T> clazz, String columnField, URI id) throws DataAccessException; public <T extends DataObject> List<NamedElement> findByPrefix(Class<T> clazz, String columnField, String prefix) throws DataAccessException; public <T extends DataObject> List<NamedElement> findByContainmentAndPrefix(Class<T> clazz, String columnField, URI id, String labelPrefix) throws DataAccessException; public <T extends DataObject> List<NamedElement> findByAlternateId(Class<T> clazz, String columnField, String value) throws DataAccessException; public List<NamedElement> findOrdersByAlternateId(String columnField, String value, long startTime, long endTime, int maxCount) throws DataAccessException; public long getOrderCount(String userId, String value, long startTime, long endTime) throws DataAccessException; public Map<String, Long> getOrderCount(List<URI> tids, String value, long startTime, long endTime) throws DataAccessException; public List<NamedElement> findAllOrdersByTimeRange(URI tid, String columnField, Date startTime, Date endTime, int maxCount) throws DataAccessException; public <T extends DataObjectWithACLs> Map<URI, Set<String>> findByPermission(Class<T> type, PermissionsKey key) throws DataAccessException; public <T extends DataObjectWithACLs> Map<URI, Set<String>> findByPermission(Class<T> type, PermissionsKey key, final Set<String> filterBy) throws DataAccessException; public <T extends DataObject> void create(T model) throws DataAccessException; public <T extends DataObject> void update(T model) throws DataAccessException; public <T extends DataObject> void delete(T model) throws DataAccessException; public <T extends DataObject> void delete(List<T> models) throws DataAccessException; }