package qa.qcri.aidr.trainer.api.service.impl;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import qa.qcri.aidr.trainer.api.dao.ClientAppSourceDao;
import qa.qcri.aidr.trainer.api.entity.ClientApp;
import qa.qcri.aidr.trainer.api.entity.ClientAppSource;
import qa.qcri.aidr.trainer.api.service.ClientAppService;
import qa.qcri.aidr.trainer.api.service.ClientAppSourceService;
import qa.qcri.aidr.trainer.api.store.StatusCodeType;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: jlucas
* Date: 6/11/14
* Time: 9:50 PM
* To change this template use File | Settings | File Templates.
*/
@Service("clientAppSourceService")
@Transactional(readOnly = true)
public class ClientAppSourceServiceImpl implements ClientAppSourceService {
@Autowired
ClientAppSourceDao clientAppSourceDao;
@Autowired
ClientAppService clientAppService;
private static Logger logger = Logger.getLogger(ClientAppSourceServiceImpl.class);
@Override
@Transactional(readOnly = false)
public void addExternalDataSouceWithClientAppID(String fileURL, Long clientAppID) {
logger.info("fileURL : " + fileURL );
logger.info("clientAppID : " + clientAppID );
boolean dublicateFound = clientAppSourceDao.findDuplicateSource(fileURL, clientAppID);
if(!dublicateFound){
List<ClientAppSource> sources = clientAppSourceDao.findActiveSourcePerClient( clientAppID );
if(sources.size() > 0){
logger.info("sources : EXTERNAL_DATA_SOURCE_UPLOADED");
ClientAppSource ca1 = new ClientAppSource(clientAppID, StatusCodeType.EXTERNAL_DATA_SOURCE_UPLOADED, fileURL);
clientAppSourceDao.createNewSource(ca1);
}
else{
logger.info("sources : EXTERNAL_DATA_SOURCE_ACTIVE");
ClientAppSource ca2 = new ClientAppSource(clientAppID, StatusCodeType.EXTERNAL_DATA_SOURCE_ACTIVE, fileURL);
clientAppSourceDao.createNewSource(ca2);
}
}
}
@Override
@Transactional(readOnly = false)
public void addExternalDataSouceWithAppType(String fileURL, Integer appType) {
List<ClientApp> clientApps = clientAppService.findClientAppByAppType("appType", appType);
for(ClientApp app : clientApps)
{
addExternalDataSouceWithClientAppID(fileURL, app.getClientAppID());
}
}
@Override
@Transactional(readOnly = false)
public void addExternalDataSouceWithPlatFormInd(String fileURL, Long micromappersID) {
ClientApp clientApps = clientAppService.findClientAppByID("platformAppID",micromappersID);
if(clientApps!= null){
addExternalDataSouceWithClientAppID(fileURL, clientApps.getClientAppID());
}
//To change body of implemented methods use File | Settings | File Templates.
}
}