package won.node.service.impl; import org.apache.camel.Exchange; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import won.protocol.model.OwnerApplication; import won.protocol.repository.OwnerApplicationRepository; import won.protocol.service.ApplicationManagementService; import java.util.List; import java.util.UUID; /** * User: sbyim * Date: 11.11.13 */ public class OwnerManagementServiceImpl implements ApplicationManagementService { private final Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private OwnerApplicationRepository ownerApplicatonRepository; @Autowired private QueueManagementServiceImpl queueManagementService; @Override public String registerOwnerApplication(Exchange exchange) { UUID ownerApplicationId = UUID.randomUUID(); //TODO: owner application id generation shall be reviewed. return registerOwnerApplication(ownerApplicationId.toString()); } @Override public String registerOwnerApplication(String ownerApplicationId) { logger.debug("ownerApplicationId: "+ownerApplicationId.toString() ); if (ownerApplicatonRepository.findByOwnerApplicationId(ownerApplicationId).isEmpty()) { logger.info("Registering owner application for the first time with id: {}", ownerApplicationId); OwnerApplication ownerApplication = new OwnerApplication(); ownerApplication.setOwnerApplicationId(ownerApplicationId.toString()); ownerApplication = ownerApplicatonRepository.save(ownerApplication); List<String> queueNames = queueManagementService.generateQueueNamesForOwnerApplication(ownerApplication); ownerApplication.setQueueNames(queueNames); ownerApplication = ownerApplicatonRepository.save(ownerApplication); return ownerApplicationId; } else { logger.info("Registering already known owner application with id: {}", ownerApplicationId); return ownerApplicationId; } } public void setQueueManagementService(QueueManagementServiceImpl queueManagementService) { this.queueManagementService = queueManagementService; } }