package com.bls.dao; import com.bls.core.Identifiable; import com.bls.core.geo.Location; import com.bls.core.place.Place; import com.bls.core.user.User; import com.google.common.base.Optional; import java.util.Collection; /** * Common behaviour for all DAO. Entity key was set to String. * * @param <E> Entity type */ public interface CommonDao<E extends Identifiable> { E create(final E entity); E update(final E entity); void delete(final E entity); void deleteById(final String id); void deleteAll(); Optional<E> findById(final String id); Collection<E> findAll(final User owner); Collection<E> find(final Location location, final Long radius, Collection<String> tags, final Optional<String> name, final Optional<String> street, Collection<Place.Subcategory> subcat, final Optional<Boolean> paid, final Optional<Boolean> open, final Optional<User> user, final Optional<Integer> page, final Integer pageSize); Optional<E> findOneByField(final String field, final String value); }