package no.niths.services.development; import java.util.ArrayList; import java.util.List; import no.niths.common.helpers.LazyFixer; import no.niths.domain.development.Application; import no.niths.domain.development.Developer; import no.niths.infrastructure.development.interfaces.ApplicationRepository; import no.niths.infrastructure.interfaces.GenericRepository; import no.niths.services.AbstractGenericService; import no.niths.services.development.interfaces.ApplicationService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * Service Class for Application * * <p> * Inherits the basic CRUD actions and has methods * for getByApplicationKey, getTopApps, * enableApplication and disableApplication * </p> */ @Service public class ApplicationServiceImpl extends AbstractGenericService<Application> implements ApplicationService { private static final Logger logger = LoggerFactory .getLogger(ApplicationServiceImpl.class); private LazyFixer<Application> lazyFixer = new LazyFixer<Application>(); @Autowired private ApplicationRepository repo; @Override @Deprecated public Application getByApplicationToken(String token) { return repo.getByApplicationToken(token); } /** * {@inheritDoc} */ @Override public List<Application> getTopApps(int maxResults){ return repo.getTopApps(maxResults); } /** * {@inheritDoc} */ @Override public Application getByApplicationKey(String key, boolean enabled) { Application app = repo.getByApplicationKey(key, enabled); ArrayList<Application> ts = new ArrayList<Application>(); ts.add(app); lazyFixer.fetchChildren(ts); return ts.get(0); } @Override public GenericRepository<Application> getRepository() { return repo; } /** * {@inheritDoc} */ @Override public void enableApplication(Long applicationId) { Application applications = validate(repo.getById(applicationId), Application.class); if ((applications.getEnabled() != null) || (!applications.getEnabled())) { applications.setEnabled(true); logger.debug("Application " + applications.getTitle() + " is enabled"); } } /** * {@inheritDoc} */ @Override public void disableApplication(Long applicationId) { Application applicatipns = validate(repo.getById(applicationId), Developer.class); if (applicatipns.getEnabled() != null && applicatipns.getEnabled()) { applicatipns.setEnabled(false); logger.debug("Application " + applicatipns.getTitle() + " is disabled"); } } }