Package com.agiletec.plugins.jpwtt.aps.system.services.ticket

Source Code of com.agiletec.plugins.jpwtt.aps.system.services.ticket.TicketManager

/*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
* This file is part of Entando Enterprise Edition software.
* You can redistribute it and/or modify it
* under the terms of the Entando's EULA
*
* See the file License for the specific language governing permissions  
* and limitations under the License
*
*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
*/
package com.agiletec.plugins.jpwtt.aps.system.services.ticket;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.agiletec.aps.system.ApsSystemUtils;
import com.agiletec.aps.system.common.AbstractService;
import com.agiletec.aps.system.exception.ApsSystemException;
import com.agiletec.aps.system.services.baseconfig.ConfigInterface;
import com.agiletec.aps.system.services.keygenerator.IKeyGeneratorManager;
import com.agiletec.plugins.jpwtt.aps.system.services.ticket.alerter.ITicketAlerter;
import com.agiletec.plugins.jpwtt.aps.system.services.ticket.model.ITicketSearchBean;
import com.agiletec.plugins.jpwtt.aps.system.services.ticket.model.InterventionType;
import com.agiletec.plugins.jpwtt.aps.system.services.ticket.model.Ticket;
import com.agiletec.plugins.jpwtt.aps.system.services.ticket.model.TicketOperation;
import com.agiletec.plugins.jpwtt.aps.system.services.ticket.model.WttConfig;
import com.agiletec.plugins.jpwtt.aps.system.services.ticket.parse.WttConfigDOM;
import com.agiletec.plugins.jpwtt.aps.util.KeyGenerator;

/**
* @author S.Didaci, E.Mezzano
*/
public class TicketManager extends AbstractService implements ITicketManager {
 
  /**
   * Inizializzazione del servizio Ticket.
   * @param ctx Il contesto del sistema.
   * @param properties Le proprietà di inizializzazione.
   * @throws com.agiletec.aps.system.exception.ApsSystemException
   */
  public void init() throws ApsSystemException {
    this.loadConfigs();
  }
 
  private void loadConfigs() throws ApsSystemException {
    try {
      ConfigInterface configManager = this.getConfigManager();
      String xml = configManager.getConfigItem("jpwttConfig");
      if (xml == null) {
        throw new ApsSystemException("Configuration item not present: jpwttConfig");
      }
      WttConfigDOM configDOM = new WttConfigDOM();
      this.setConfig(configDOM.extractConfig(xml));
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "loadConfigs");
      throw new ApsSystemException("Errore in fase di inizializzazione", t);
    }
  }
 
  @Override
  public List<Ticket> getTickets() throws ApsSystemException {
    List<Ticket> tickets = null;
    try {
      tickets = this.getTicketDAO().loadTickets();
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "getTickets");
      throw new ApsSystemException("Error loading tickets", t);
    }
    return tickets;
  }
 
  @Override
  public List<String> searchTicketIds(ITicketSearchBean searchBean) throws ApsSystemException {
    List<String> ticketIds = null;
    try {
      ticketIds = this.getTicketDAO().searchTicketIds(searchBean);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "searchTicketIds");
      throw new ApsSystemException("Error searching ticket ids", t);
    }
    return ticketIds;
  }
 
  @Override
  public Ticket getTicket(String code) throws ApsSystemException {
    Ticket ticket = null;
    try {
      ticket = this.getTicketDAO().loadTicket(code);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "getTicket");
      throw new ApsSystemException("Error loading ticket", t);
    }
    return ticket;
  }
 
  public List<TicketOperation> getTicketOperations(String code) throws ApsSystemException {
     List<TicketOperation> ticketOperations = null;
    try {
      ticketOperations = this.getTicketDAO().loadTicketOperations(code);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "getTicketOperations");
      throw new ApsSystemException("Error loading ticket operations", t);
    }
    return ticketOperations;
  }
 
  @Override
  public void addTicket(Ticket ticket) throws ApsSystemException {
    try {
      int key = this.getKeyGeneratorManager().getUniqueKeyCurrentValue();
      String id =  KeyGenerator.generateTicketKey(String.valueOf(key)); // TODO Modificare?
      ticket.setCode(id.trim());
      this.getTicketDAO().addTicket(ticket);
      this.sendNotify(ticket);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "addTicket");
      throw new ApsSystemException("Error adding ticket", t);
    }
  }
 
  @Override
  public void updateTicketWithOperation(Ticket ticket, TicketOperation operation) throws ApsSystemException {
    try {
      int key = this.getKeyGeneratorManager().getUniqueKeyCurrentValue();
      operation.setId(key);
      this.getTicketDAO().updateTicketWithOperation(ticket, operation);
      this.sendNotify(ticket, operation);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "updateTicketWithOperation");
      throw new ApsSystemException("Error updating ticket with operation", t);
    }
  }
 
  /**
   * restituisce la lista delle priorità di intervento.
   * @return La lista delle priorità di intervento.
   */
  @Override
  public Map<Integer, String> getPriorities() {
      return this.getConfig().getPriorities();
  }
  @Override
  public String getPriority(int priority) {
      return this.getConfig().getPriorities().get(new Integer(priority));
  }
 
  protected void sendNotify(Ticket ticket) {
    Integer intervTypeId = ticket.getUserInterventionType();
    InterventionType interventionType = intervTypeId!=null ? this.getInterventionType(intervTypeId) : null;
   
    List<ITicketAlerter> alerters = this.getTicketAlerters();
    if (alerters!=null && !alerters.isEmpty()) {
      for (ITicketAlerter ticketAlerter : alerters) {
        ticketAlerter.notifyAddedTicket(ticket, interventionType);
      }
    }
  }
 
  protected void sendNotify(Ticket ticket, TicketOperation operation) {
    Integer intervTypeId = ticket.getUserInterventionType();
    InterventionType interventionType = intervTypeId!=null ? this.getInterventionType(intervTypeId) : null;
   
    List<ITicketAlerter> alerters = this.getTicketAlerters();
    if (alerters!=null && !alerters.isEmpty()) {
      for (ITicketAlerter ticketAlerter : alerters) {
        ticketAlerter.notifyTicketOperation(ticket, operation, interventionType);
      }
    }
  }
 
  @Override
  public Map<Integer, InterventionType> getInterventionTypes() {
      return this.getConfig().getInterventionTypes();
  }
  @Override
  public InterventionType getInterventionType(Integer intervTypeId) {
      return this.getConfig().getInterventionType(intervTypeId);
  }
 
  protected List<ITicketAlerter> getTicketAlerters() {
    return _ticketAlerters;
  }
  public void setTicketAlerters(List<ITicketAlerter> ticketAlerters) {
    this._ticketAlerters = ticketAlerters;
  }
 
  public WttConfig getConfig() {
    return _config;
  }
  protected void setConfig(WttConfig config) {
    this._config = config;
  }
 
  public ITicketDAO getTicketDAO() {
    return _ticketDAO;
  }
  public void setTicketDAO(ITicketDAO ticketDAO) {
    this._ticketDAO = ticketDAO;
  }
 
  public IKeyGeneratorManager getKeyGeneratorManager() {
    return _keyGeneratorManager;
  }
  public void setKeyGeneratorManager(IKeyGeneratorManager keyGeneratorManager) {
    this._keyGeneratorManager = keyGeneratorManager;
  }
 
  /**
   * Returns the configuration manager.
   * @return The Configuration manager.
   */
  protected ConfigInterface getConfigManager() {
    return _configManager;
  }
  /**
   * Set method for Spring bean injection.<br /> Set the Configuration manager.
   * @param configManager The Configuration manager.
   */
  public void setConfigManager(ConfigInterface configManager) {
    this._configManager = configManager;
  }
 
  private WttConfig _config;
 
  private ITicketDAO _ticketDAO;
  private List<ITicketAlerter> _ticketAlerters = new ArrayList<ITicketAlerter>();
  private IKeyGeneratorManager _keyGeneratorManager;
  private ConfigInterface _configManager;
 
}
TOP

Related Classes of com.agiletec.plugins.jpwtt.aps.system.services.ticket.TicketManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.