package edu.asu.spring.quadriga.service.impl; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import edu.asu.spring.quadriga.dao.IEditorDAO; import edu.asu.spring.quadriga.dao.INetworkDAO; import edu.asu.spring.quadriga.domain.IUser; import edu.asu.spring.quadriga.domain.factory.networks.INetworkFactory; import edu.asu.spring.quadriga.domain.network.INetwork; import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException; import edu.asu.spring.quadriga.service.IEditorManager; import edu.asu.spring.quadriga.service.network.INetworkManager; import edu.asu.spring.quadriga.service.network.mapper.INetworkMapper; import edu.asu.spring.quadriga.web.network.INetworkStatus; /** * This class acts as a Network manager which handles the networks object * * @author : Lohith Dwaraka */ @Service public class EditorManager implements IEditorManager { private static final Logger logger = LoggerFactory.getLogger(EditorManager.class); @Autowired private INetworkFactory networkFactory; @Autowired private INetworkManager networkManager; @Autowired private IEditorDAO dbConnect; @Autowired private INetworkMapper networkmapper; @Autowired private INetworkDAO dbnetworkManager; /** * This method retrieves the list of networks associated with the user. * * @param IUser * - logged in user object * @return List<INetwork> - list of networks associated with the user. * @throws QuadrigaStorageException */ @Override @Transactional public List<INetwork> getEditorNetworkList(IUser user) throws QuadrigaStorageException { List<INetwork> networkList = new ArrayList<INetwork>(); try { networkList = networkmapper.getEditorNetworkList(user); } catch (QuadrigaStorageException e) { logger.error("Something went wrong in DB", e); } return networkList; } /** * This method assigns a network to the user * * @param networkId * - networkId * @param user * - logged in user object * @return String - message after assigning the network to the user * @throws QuadrigaStorageException */ @Override @Transactional public String assignNetworkToUser(String networkId, IUser user) throws QuadrigaStorageException { String msg = ""; INetwork network = networkManager.getNetwork(networkId); try { int latestVersion = networkManager.getLatestVersionOfNetwork(networkId); msg = dbConnect.assignNetworkToUser(networkId, user, network.getNetworkName(), latestVersion); } catch (QuadrigaStorageException e) { logger.error("Something went wrong in DB", e); } return msg; } /** * This method retrieve the assigned networks of the user * * @param user * - logged in user object * @return List<INetwork> - list of assigned networks * @throws QuadrigaStorageException */ @Override @Transactional public List<INetwork> getAssignNetworkOfUser(IUser user) throws QuadrigaStorageException { List<INetwork> networkList = null; try { networkList = networkmapper.getNetworksOfUserWithStatus(user, INetworkStatus.ASSIGNED); } catch (QuadrigaStorageException e) { logger.error("Something went wrong in DB", e); } return networkList; } /** * This method retrieves the networks of all other editors * * @param IUser * - logged in user object * @return List<INetwork> - list of networks assigned to other editors * @throws QuadrigaStorageException */ @Override @Transactional public List<INetwork> getfinishedNetworkListOfOtherEditors(IUser user) throws QuadrigaStorageException { List<INetwork> networkList = null; try { List<String> networkStatus = new ArrayList<String>(); networkStatus.add(INetworkStatus.APPROVED); networkList = dbConnect.getNetworkListOfOtherEditors(user, networkStatus); } catch (QuadrigaStorageException e) { logger.error("Something went wrong in DB", e); } return networkList; } /** * This method retrieves the assigned list of networks for other editors * * @param IUser * - logged in user object * @return List<INetwork> - list of assigned networks of other editors * @throws QuadrigaStorageException */ @Override @Transactional public List<INetwork> getAssignedNetworkListOfOtherEditors(IUser user) throws QuadrigaStorageException { List<String> networkStatus = new ArrayList<String>(); networkStatus.add(INetworkStatus.ASSIGNED); List<INetwork> networkList = dbConnect.getNetworkListOfOtherEditors(user, networkStatus); return networkList; } /** * This method retrieves the list of reject networks for the user * * @param IUser * - logged in user object * @return List<INetwork> - list of rejected networks for the user * @throws QuadrigaStorageException */ @Override @Transactional public List<INetwork> getRejectedNetworkOfUser(IUser user) throws QuadrigaStorageException { List<INetwork> networkList = null; try { networkList = networkmapper.getNetworksOfUserWithStatus(user, INetworkStatus.REJECTED); } catch (QuadrigaStorageException e) { logger.error("Something went wrong in DB", e); } return networkList; } /** * This method retrieves the approved networks of the user * * @param IUser * - logged in user object * @return List<INetwork> - list of approved networks for the user. * @throws QuadrigaStorageException */ @Override @Transactional public List<INetwork> getApprovedNetworkOfUser(IUser user) throws QuadrigaStorageException { List<INetwork> networkList = new ArrayList<INetwork>(); try { networkList = networkmapper.getNetworksOfUserWithStatus(user, INetworkStatus.APPROVED); } catch (QuadrigaStorageException e) { logger.error("Something went wrong in DB", e); } return networkList; } /** * This method update the status of the network * * @param networkId * - network id * @param status * - status of the network * @throws QuadrigaStorageException * @return String - message after updating the network status */ @Override @Transactional public String updateNetworkStatus(String networkId, String status) throws QuadrigaStorageException { String msg = ""; logger.info("Changing to status : " + status); try { msg = dbConnect.updateNetworkStatus(networkId, status); } catch (QuadrigaStorageException e) { logger.error("Something went wrong in DB", e); } return msg; } /** * This method updates the assigned network status * * @param networkId * - network id of assigned network * @param status * - status of the network * @throws QuadrigaStorageException * @return String - message after updating the assigned network status */ @Override @Transactional public String updateAssignedNetworkStatus(String networkId, String status) throws QuadrigaStorageException { String msg = ""; try { int latestVersion = networkManager.getLatestVersionOfNetwork(networkId); logger.info("Latest version : " + latestVersion + " status : " + status); msg = dbConnect.updateAssignedNetworkStatus(networkId, status, latestVersion); } catch (QuadrigaStorageException e) { logger.error("Something went wrong in DB", e); } return msg; } }