package com.redhat.lightblue.migrator.facade;
import java.util.List;
import com.redhat.lightblue.migrator.facade.model.Country;
import com.redhat.lightblue.migrator.facade.proxy.FacadeProxyFactory.DirectOperation;
import com.redhat.lightblue.migrator.facade.proxy.FacadeProxyFactory.ReadOperation;
import com.redhat.lightblue.migrator.facade.proxy.FacadeProxyFactory.Secret;
import com.redhat.lightblue.migrator.facade.proxy.FacadeProxyFactory.WriteOperation;
import com.redhat.lightblue.migrator.facade.proxy.FacadeProxyFactory.DirectOperation.Target;
import com.redhat.lightblue.migrator.facade.sharedstore.SharedStoreSetter;
/**
* Service interface with facade configurations.
*
* @author mpatercz
*
*/
public interface CountryDAOFacadable extends CountryDAO, SharedStoreSetter {
@WriteOperation
public abstract Country createCountry(Country country) throws CountryException;
@WriteOperation
public abstract Country createCountryIfNotExists(Country country) throws CountryException;
@WriteOperation(parallel = true)
public abstract Country updateCountry(Country country) throws CountryException;
@ReadOperation(parallel = true)
public abstract Country getCountry(String iso2Code) throws CountryException;
@ReadOperation(parallel = true)
public abstract List<Country> getCountries(long[] ids) throws CountryException;
public abstract Country getCountryFromLegacy(long id) throws CountryException;
@DirectOperation(target = Target.LEGACY)
public abstract Country getCountryFromLegacy2(long id) throws CountryException;
@DirectOperation(target = Target.LIGHTBLUE)
public abstract Country getCountryFromLightblue(long id) throws CountryException;
@WriteOperation
public abstract Country createGeneratedCountry() throws CountryException;
/**
* Shows how to avoid logging sensitive information passed as parameters.
*
*/
@WriteOperation
public abstract Country secureCountry(long id, @Secret String password) throws CountryException;
}