Package

Source Code of ConfigurationManagerBean

/**
- $Header: $
- $Author: $
- $Revision: $
- $Date: $

- $Log: $
**/

/***************************************************************************
*  Copyright (c) 2004 - 2008  Fabrizio Boco fabboco@users.sourceforge.net *
*                                                                         *
*   This file is generated with SeamWebAppGen.                            *
*                                                                         *
*   This is free software; you can redistribute it and/or                 *
*   modify it under the terms of the GNU Library General Public           *
*   License as published by the Free Software Foundation; either          *
*   version 2 of the License, or (at your option) any later version.      *
*                                                                         *
*   This library  is distributed in the hope that it will be useful,      *
*   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
*   GNU Library General Public License for more details.                  *
*                                                                         *
*   You should have received a copy of the GNU Library General Public     *
*   License along with this library; see the file COPYING.LIB. If not,    *
*   write to the Free Software Foundation, Inc., 59 Temple Place,         *
*   Suite 330, Boston, MA  02111-1307, USA                                *
*                                                                         *
***************************************************************************/

package @basePackage.manager;

import @basePackage.entity.*;
import @basePackage.manager.managerInterface.*;


import java.rmi.RemoteException;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.HashMap;
import java.util.Vector;
import java.util.HashMap;
import java.util.ArrayList;

import javax.ejb.EJB;
import javax.ejb.Remove;
import javax.ejb.Stateful;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.DoubleConverter;
import javax.faces.convert.IntegerConverter;
import javax.faces.event.AbortProcessingException;
import javax.naming.Context;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;

import @basePackage.entity.Configuration;

import org.apache.commons.collections.set.ListOrderedSet;

import org.boco.seamUtility.converter.MyConverter;
import org.boco.seamUtility.SeamUtility;
import org.boco.seamUtility.QueryBuilder;

import org.hibernate.Hibernate;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.FlushModeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.Startup;
import org.jboss.seam.annotations.Synchronized;
import org.jboss.seam.annotations.remoting.WebRemote;
import org.jboss.seam.annotations.web.RequestParameter;
import org.jboss.seam.annotations.Scope;

import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.annotations.datamodel.DataModelSelection;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.core.Conversation;
import org.jboss.seam.faces.FacesMessages;
import org.jboss.seam.core.Manager;
import org.jboss.seam.annotations.security.Restrict;
import org.jboss.seam.log.Log;

import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.End;

import org.boco.seamUtility.pathManagement.PathItem;

@Stateful
@Name("ConfigurationManager")
@Scope(ScopeType.APPLICATION)
@Startup
@Synchronized
public class ConfigurationManagerBean implements Serializable,
    ConfigurationManager
{

  private static final long            serialVersionUID        = 1L;

  //@PersistenceContext(type = PersistenceContextType.EXTENDED)
  @In
  private EntityManager              entityManager;

  @In(create = true)
  @Out(required = false, scope = ScopeType.APPLICATION)
  @DataModelSelection(value = "configurationList")
  private Configuration              configuration;

  @DataModel(value = "configurationList")
  private List<Configuration>          configurationList;

  private HashMap<String, Configuration>    configurationMap;

  @Logger
  private Log                      log;

  @Out
  private String                    configurationOperation    = "DISPLAY";
  private String                    returningPage;

  @In(required = false)
  private FacesContext                facesContext;

  @In(create = true)
  private transient FacesMessages        facesMessages;

  /** Gestione ordinamento colonne **/
  private int                      order                = 0;

  /** Gestione PopUp **/
  @Out(scope = ScopeType.CONVERSATION, required = false)
  private HashMap<Configuration, Boolean>  selections            = new HashMap<Configuration, Boolean>();
  private Vector<Configuration>          selectedItems          = new Vector<Configuration>();
  private Vector<Configuration>          justCreatedItems        = new Vector<Configuration>();
  private String                    popUpReturningPage      = "";
  private String                    oldReferrer            = null;

  /** Gestione MASTER-DETAIL **/
  @RequestParameter("masterReference")
  private String                    masterReferenceParameter  = null;
  private boolean                  masterReference        = false;
  private String                    filter              = "";

  /** Gestione Local Search **/
  private boolean                  localSearch            = false;

  /** Gestione Search **/
  @DataModel(value = "configurationSearchList")
  private List<Configuration>          configurationSearchList;

  @In(required = false, create = true, value = "configurationSearch")
  @Out(required = false, scope = ScopeType.CONVERSATION)
  private Configuration              configurationSearch;

  /** Gestione Dettagli **/

  @In
  private Conversation                conversation;

  /** Gestione Bean derivati **/

  /** Variabili per codice custom **/
  // YOUR CODE GOES HERE
  // END OF YOUR CODE

  public ConfigurationManagerBean()
  {
  }

  @Create()
  public void create()
  {
    log.debug("********************************************************");
    log.debug(" Creato bean per Conversation id " + conversation.getId());
    log.debug("********************************************************");

    // entityManager.setFlushMode(javax.persistence.FlushModeType.COMMIT);
    log.debug("Flush Mode " + entityManager.getFlushMode());

    // YOUR CODE GOES HERE
    try
    {
      configuration = (Configuration) entityManager.createQuery("select o from Configuration as o").getSingleResult();
    }
    catch (javax.persistence.NoResultException e)
    {

    }   
    // END OF YOUR CODE
  }

  public String getConfigurationConversationId()
  {
    return conversation.getId();
  }

  public void setReturningPage(String returningPage)
  {
    this.returningPage = returningPage;
  }

  public void setConfigurationOperation(String configurationOperation)
  {
    this.configurationOperation = configurationOperation;
  }

  @End(beforeRedirect = true)
  //@Rollback
  public String cancel()
  {
    log.info("------------------------------------------------");
    log.info("cancel");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("entityManager FlushMode " + entityManager.getFlushMode());
    log.debug("User #{user.username} ");
    log.info("------------------------------------------------");

    return returningPage;
  }

  /** Init **/
  @Restrict("#{s:hasRole('Administrator')}")
  @Begin(nested = true)
  public String initCreate()
  {
    log.info("------------------------------------------------");
    log.info("initCreate");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.info("------------------------------------------------");

    // YOUR CODE GOES HERE
   
    if (entityManager.createQuery("select o from Configuration as o").getResultList().size()>0)
    {
      SeamUtility.displayMessageFromMessagesProperties(facesContext, FacesMessage.SEVERITY_INFO, "error_Configuration_alreadyExists");
     
      return "/list/ConfigurationList.xhtml";
    }
   
    // END OF YOUR CODE

    returningPage = SeamUtility.getReferrer(facesContext);

    configuration = new Configuration();

    // YOUR CODE GOES HERE
    // END OF YOUR CODE

    configurationOperation = "CREATE";
    return "/Configuration.xhtml";
  }

  @Restrict("#{s:hasRole('Administrator')}")
  @Begin(nested = true)
  public String initEdit()
  {
    log.info("------------------------------------------------");
    log.info("initEdit");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.info("------------------------------------------------");

    // YOUR CODE GOES HERE
    // END OF YOUR CODE

    returningPage = SeamUtility.getReferrer(facesContext);

    configurationOperation = "EDIT";

    entityManager.clear();
    configuration = entityManager.find(Configuration.class, configuration.getId());

    // YOUR CODE GOES HERE
    // END OF YOUR CODE

    return "/Configuration.xhtml";
  }

  @Restrict("#{s:hasRole('Administrator')}")
  @Begin(nested = true)
  public String initDelete()
  {
    log.info("------------------------------------------------");
    log.info("initDelete");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.info("------------------------------------------------");

    // YOUR CODE GOES HERE
    //  END OF YOUR CODE

    returningPage = SeamUtility.getReferrer(facesContext);

    configurationOperation = "DELETE";

    entityManager.clear();
    configuration = entityManager.find(Configuration.class, configuration.getId());

    return "/Configuration.xhtml";
  }

  @Begin(nested = true)
  public String initDisplay()
  {
    log.info("------------------------------------------------");
    log.info("initDisplay");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.info("------------------------------------------------");

    // YOUR CODE GOES HERE
    // END OF YOUR CODE

    returningPage = SeamUtility.getReferrer(facesContext);

    configurationOperation = "DISPLAY";

    entityManager.clear();
    configuration = entityManager.find(Configuration.class, configuration.getId());

    return "/Configuration.xhtml";
  }

  //@Begin(nested=true)
  @Begin(join = true)
  //@Begin(join=true, flushMode = FlushModeType.COMMIT)
  public String initSearch()
  {
    log.info("initSearch");

    // YOUR CODE GOES HERE
    // END OF YOUR CODE

    configurationSearch = new Configuration();
    configurationSearchList = null;

    configurationOperation = "SEARCH";

    return "/search/ConfigurationSearch.xhtml";
  }

  /** Process **/
  @Restrict("#{s:hasRole('Administrator')}")
  @End(beforeRedirect = true)
  public String processCreate()
  {
    log.info("------------------------------------------------");
    log.info("processCreate");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.info("------------------------------------------------");

    // YOUR CODE GOES HERE
    // END OF YOUR CODE

    configuration = entityManager.merge(configuration);

    // YOUR CODE GOES HERE
    // END OF YOUR CODE

    // YOUR CODE GOES HERE
    //  END OF YOUR CODE

    //    Conversation.instance().end();   
    //    Conversation.instance().pop();

    configurationList = null;
    configurationSearchList = null;

    selectedItems.add(configuration);
    justCreatedItems.add(configuration);

    configuration = null;

    return returningPage;
  }

  @Restrict("#{s:hasRole('Administrator')}")
  @End(beforeRedirect = true)
  public String processEdit()
  {
    log.info("------------------------------------------------");
    log.info("processEdit");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.info("------------------------------------------------");

    entityManager.clear();

    // YOUR CODE GOES HERE
    // END OF YOUR CODE

    configuration = entityManager.merge(configuration);

    // YOUR CODE GOES HERE
    // END OF YOUR CODE

    //    Conversation.instance().end();   
    //    Conversation.instance().pop();

    configurationList = null;
    configurationSearchList = null;

    return returningPage;
  }

  @Restrict("#{s:hasRole('Administrator')}")
  @End(beforeRedirect = true)
  public String processDelete()
  {
    log.info("------------------------------------------------");
    log.info("processDelete");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.info("------------------------------------------------");

    entityManager.remove(configuration);

    //    Conversation.instance().end();   
    //    Conversation.instance().pop();

    configurationList = null;
    configurationSearchList = null;

    selectedItems.remove(configuration);

    while (contains(selections.keySet(), configuration))
      selections = remove(selections, configuration);

    justCreatedItems.remove(configuration);

    configuration = null;

    return returningPage;
  }

  @End(beforeRedirect = true)
  public String processDisplay()
  {
    log.info("------------------------------------------------");
    log.info("processDisplay");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.info("------------------------------------------------");

    return returningPage;
  }

  //@End()
  public String processSearch()
  {
    log.info("------------------------------------------------");
    log.info("processSearch");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.info("------------------------------------------------");

    return "/search/ConfigurationSearchList.seam";
  }

  public Configuration find(Long id)
  {
    log.info("------------------------------------------------");
    log.info("find");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.info("------------------------------------------------");

    return entityManager.find(Configuration.class, id);
  }

  @Factory("configurationList")
  @Begin(join = true)
  public void findAll()
  {
    log.info("findAll");
    boolean localSearchConditionAdded = false;
    String customFilter = "";
    QueryBuilder qb = new QueryBuilder(entityManager);

    String referrer = SeamUtility.getReferrer(facesContext);

    String viewId = facesContext.getViewRoot().getViewId();
    Object callingBean = null;
    Field callingBeanField;

    if (oldReferrer == null || oldReferrer.equals(""))
      oldReferrer = referrer;

    //if (!oldReferrer.equals(""))
    if (!oldReferrer.equals("") && !oldReferrer.contains("/ConfigurationList"))
    {
      // Salva id conversazione corrente per ripristinarla in seguito

      String currentConversationId = conversation.getId();

      // Dal referrer estrae la conversazione che contiene il bean chiamante

      int start = oldReferrer.indexOf("conversationId") + 15;
      int end = oldReferrer.indexOf("&");
      if (end == -1)
        end = oldReferrer.length();

      String callingConversationId = oldReferrer.substring(start, end);

      // Switch alla conversazione che contiene il bean chiamante

      Manager.instance().switchConversation(callingConversationId);

      // Recupera il bean chiamante dalla conversazione

      callingBeanField = SeamUtility.getCallingBeanField(this.getClass(), oldReferrer);

      try
      {
        callingBean = Contexts.getConversationContext().get(callingBeanField.getName());
      }
      catch (Exception e)
      {
        ;
      }

      // Switch back alla conversazione corrente
      Manager.instance().switchConversation(currentConversationId);

      // Inserisce il bean padre nella conversazione corrente
      // Serve per recuperare i valori da ripristinare nel form alla chisura
      // della popup
      try
      {
        Contexts.getConversationContext().set(callingBeanField.getName(), callingBean);
      }
      catch (Exception e)
      {
        ;
      }
    }

    qb.addSelect("o");
    qb.addFrom("Configuration o");

    // YOUR CODE GOES HERE
    // END OF YOUR CODE

    qb.addTextWhere(customFilter, customFilter);

    switch (order)
    {
      case 1:
        qb.addOrderBy("o.hostName asc");
        break;
      case 2:
        qb.addOrderBy("o.hostName desc");
        break;

      default:
        qb.addOrderBy("o.hostName asc");
    }

    log.debug("  query: " + qb.getQuery());
    long startTime = System.currentTimeMillis();

    entityManager.clear();

    ListOrderedSet tmp = new ListOrderedSet();
    tmp.addAll(qb.getEjbQuery().getResultList());
    Vector<Configuration> tmp1 = new Vector<Configuration>(tmp.asList());
    configurationList = tmp1;

    if (callingBean != null)
    {
      // Sta caricando una popUp e deve gestire gli item selezionati

      //String viewId = facesContext.getViewRoot().getViewId();

      List<Configuration> relatedConfigurations = SeamUtility.getBeanRelationshipValues(callingBean, viewId);

      for (Configuration localConfiguration : configurationList)
      {
        if (relatedConfigurations != null && relatedConfigurations.contains(localConfiguration))
        {
          // Aggiunge gli elementi correlati a quelli selezionati

          selections.put(localConfiguration, true);
        }

        if (selectedItems.contains(localConfiguration))
        {
          // Aggiunge gli elementi eventualmente gia' selezionati in altre pagine

          selections.put(localConfiguration, true);
        }

      }
    }

    // Sposta gli elementi selezionati all'inizio della lista
    List<Configuration> adding = new Vector<Configuration>();
    List<Configuration> removing = new Vector<Configuration>();

    for (Configuration configurationLocal : configurationList)
    {
      if (selections.containsKey(configurationLocal) && selections.get(configurationLocal))
      {
        adding.add(configurationLocal);
        removing.add(configurationLocal);
      }
    }
    configurationList.removeAll(removing);
    adding.addAll(configurationList);
    configurationList.clear();
    configurationList.addAll(adding);

    long endTime = System.currentTimeMillis();

    log.debug("Query Time: " + (endTime - startTime) + " ms " + (endTime - startTime) / 1000 + " s");

  }

  @Factory("configurationSearchList")
  @Begin(join = true)
  public void search() throws Exception
  {
    if (configurationSearch == null)
      return;

    String customFilter = "";
    QueryBuilder qb = new QueryBuilder(entityManager);

    qb.addSelect("o");
    qb.addFrom("Configuration o");

    qb.addTextWhere(customFilter, customFilter);

    switch (order)
    {
      case 1:
        qb.addOrderBy("o.hostName asc");
        break;
      case 2:
        qb.addOrderBy("o.hostName desc");
        break;

      default:
        qb.addOrderBy("o.hostName asc");
    }

    // YOUR CODE GOES HERE
    // END OF YOUR CODE

    entityManager.clear();

    configurationSearchList = qb.getEjbQuery().getResultList();

  }

  public void resetList()
  {
    log.info("resetList");

    configurationList = null;
  }

  public void makeList(String methodName[], String filter) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
  {
    log.info("------------------------------------------------");
    log.info("makeList");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.debug("\tFilter " + filter);
    log.info("------------------------------------------------");

    String query = "select o from Configuration o ";

    if (filter != null && !filter.equals(""))
      query += " where " + filter;

    entityManager.clear();

    List<Configuration> items = entityManager.createQuery(query).getResultList();

    configurationMap = new HashMap<String, Configuration>();

    if (items.size() > 0)
    {
      Method methods[] = new Method[methodName.length];

      for (int i = 0; i < methodName.length; i++)
      {
        methods[i] = items.get(0).getClass().getMethod(methodName[i], (Class[]) null);
      }

      for (Configuration localConfiguration : items)
      {
        String label = "";

        for (int i = 0; i < methods.length; i++)
        {
          log.debug("\tmethodName " + methodName[i]);

          if (i > 0)
            label += " - ";

          Object value = methods[i].invoke(localConfiguration, (Object[]) null);
          if (value != null)
            label += value.toString();
          else
            label += "";
        }
        configurationMap.put(label, localConfiguration);
      }
    }

    //configurationMap.put("-- selezionare -- ", new Configuration());   
  }

  @Begin(join = true)
  public void onListLoad()
  {
    log.info("------------------------------------------------");
    log.info("metodo onListLoad");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.info("------------------------------------------------");

    String referrer = SeamUtility.getReferrer(facesContext);
    masterReferenceParameter = SeamUtility.getParameter(facesContext, "masterReference");

    //    if (SeamUtility.getParameter(facesContext, "conversationId") != null && popUpReturningPage.equals(""))
    //    {
    //      // Memorizza la pagina di ritorno nel caso in cui la pagina sia una popup
    //      popUpReturningPage = referrer;
    //    }

    if (!referrer.contains("/list/Configuration") && !referrer.contains("/Configuration") && !referrer.contains("PopUp"))
    {
      // Deve entrare qui al caricamento della pagina

      if (masterReferenceParameter == null)
      {
        SeamUtility.resetPath();
        configurationList = null;
        masterReference = false;
      }
      else
      {
        masterReference = true;
        SeamUtility.removeLastPathItem("Configuration");
      }
    }

    //if (referrer.contains("/Configuration") && masterReference)
    if (referrer.contains("/Configuration"))
    {
      // Deve aggiornare la lista dopo una azione su un item
      configurationList = null;
    }

    if (referrer.contains("/list/") || referrer.contains("Administration.seam"))
    {
      // Reload al caricamento delle pagine indicate
      configurationList = null;
    }

  }

  public void onPopUpLoad()
  {
    log.info("------------------------------------------------");
    log.info("metodo onPopUpLoad");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.info("------------------------------------------------");

    String referrer = SeamUtility.getReferrer(facesContext);
    masterReferenceParameter = SeamUtility.getParameter(facesContext, "masterReference");

    if (SeamUtility.getParameter(facesContext, "parentConversationId") != null && popUpReturningPage.equals(""))
    {
      // Memorizza la pagina di ritorno nel caso in cui
      // la popup sia chiamata per la prima volta

      popUpReturningPage = referrer.replace("parentConversationId", "conversationId");
    }

    configurationList = null;

    Set<Configuration> keys = selections.keySet();
    for (Configuration selectedConfiguration : keys)
    {
      if (selections.get(selectedConfiguration))
      {
        if (!selectedItems.contains(selectedConfiguration))
          selectedItems.add(selectedConfiguration);
      }
    }

    for (Configuration selectedConfiguration : selectedItems)
    {
      if (contains(keys, selectedConfiguration))
      {
        //boolean selected = selections.get(selectedConfiguration);
        boolean selected = get(selections, selectedConfiguration);

        if (!selected)
          selectedItems.remove(selectedConfiguration);
      }
    }

    log.debug("Referrer " + referrer);
    if (!referrer.contains("/popup/"))
    {
      // Prima chiamata alla popup
      // deve essere creata una conversazione nested

      log.debug("Start di una nuova transazione");
      conversation.begin();
    }
    else
    {
      // Chiamata successiva alla popup

      log.debug("Join alla transazione esistente");
      conversation.begin(true, false);
    }
  }

  @Remove
  @Destroy
  public void destroy()
  {
    log.debug("$$$$$$$$$$$$$$$$");
    log.debug("Rilasciato bean");
    log.debug("$$$$$$$$$$$$$$$$");
  }

  public Configuration getConfiguration()
  {
    return configuration;
  }

  public void setConfiguration(Configuration configuration)
  {
    this.configuration = configuration;
  }

  //  public String getOperation()
  //  {
  //    return operation;
  //  }
  //
  //  public void setOperation(String operation)
  //  {
  //    this.operation = operation;
  //  }

  public boolean isShowNavigationMenuItems()
  {
    String referrer = SeamUtility.getReferrer(facesContext);

    if (referrer.contains("/popup/"))
      return false;

    return true;
  }

  /** Gestione ordinamento colonne **/
  public Integer getOrder()
  {
    return order;
  }

  public void orderBy1A()
  {
    order = 1;
  }

  public void orderBy1D()
  {
    order = 2;
  }

  /** Gestione PopUp **/

  public HashMap<Configuration, Boolean> getSelections()
  {
    return selections;
  }

  public void setSelections(HashMap<Configuration, Boolean> selections)
  {
    this.selections = selections;
  }

  public String select()
  {
    log.info("------------------------------------------------");
    log.info("select");
    log.debug("Conversation id " + conversation.getId());
    log.debug("Conversation view id " + conversation.getViewId());
    log.debug("Conversation nested " + conversation.isNested());
    log.debug("Conversation parent id " + conversation.getParentId());
    log.debug("Is long running " + conversation.isLongRunning());
    log.debug("User #{user.username} ");
    log.debug("\tSelected Items " + selectedItems);
    log.debug("\tJust Created Items " + justCreatedItems);
    log.debug("\tSelection " + selections);
    log.info("------------------------------------------------");

    Field beanField = null;

    String referrer = SeamUtility.getReferrer(facesContext);

    if (popUpReturningPage.startsWith("/search"))
      beanField = SeamUtility.getCallingBeanField2(this.getClass(), referrer, true);
    else
      beanField = SeamUtility.getCallingBeanField2(this.getClass(), referrer, false);

    Object bean = null;

    // Chiude la conversazione corrente
    conversation.end();

    // Switch alla conversazione che contiene il bean
    // che deve essere aggiornato

    int start = popUpReturningPage.indexOf("conversationId") + 15;
    int end = popUpReturningPage.indexOf("&");

    String toConversation = popUpReturningPage.substring(start, end);

    Manager.instance().switchConversation(toConversation);

    // Recupera il bean che deve essere aggiornato

    bean = Contexts.getConversationContext().get(beanField.getName());

    Set<Configuration> keys = selections.keySet();

    // Rimuove i valori presenti

    SeamUtility.removeAllRelatedValues(bean, referrer);

    // Inserisce solo i selezionati

    for (Configuration localConfiguration : keys)
    {
      if (selections.get(localConfiguration).equals(true))
      {
        List relatedConfigurations = SeamUtility.getBeanRelationshipValues(bean, referrer);

        if (relatedConfigurations == null || !relatedConfigurations.contains(localConfiguration))
          SeamUtility.addRelatedValue(bean, referrer, configuration.getClass(), localConfiguration);
      }
    }

    // Resetta i valori selezionati
    selections.clear();
    justCreatedItems.clear();

    String ret = "/close.xhtml?goTo=." + popUpReturningPage;

    log.debug("\tReturning page " + ret);

    popUpReturningPage = "";

    return ret;
  }

  private boolean contains(Set<Configuration> keys, Configuration key)
  {

    for (Iterator iter = keys.iterator(); iter.hasNext();)
    {
      Configuration element = (Configuration) iter.next();

      if (key.equals(element))
        return true;
    }

    return false;
  }

  private HashMap<Configuration, Boolean> remove(HashMap<Configuration, Boolean> map, Configuration key)
  {
    HashMap<Configuration, Boolean> ret = new HashMap<Configuration, Boolean>();

    Set<Configuration> mapKeys = map.keySet();
    for (Configuration localConfiguration : mapKeys)
    {
      if (!localConfiguration.equals(key))
        ret.put(localConfiguration, true);
    }

    return ret;
  }

  private List<Configuration> remove(List<Configuration> list, Configuration key)
  {
    List<Configuration> ret = new Vector<Configuration>();

    for (Configuration localConfiguration : list)
    {
      if (!localConfiguration.equals(key))
        ret.add(localConfiguration);
    }

    return ret;
  }

  private boolean get(HashMap<Configuration, Boolean> selections, Configuration selected)
  {
    Set<Configuration> keys = selections.keySet();

    for (Configuration configuration : keys)
    {
      if (configuration.equals(selected))
        return selections.get(configuration);
    }

    return false;
  }

  /** Gestione MASTER-SLAVE **/

  /** Gestione Local Search **/
  public boolean isLocalSearch()
  {
    return localSearch;
  }

  public void setLocalSearch(boolean search)
  {
    this.localSearch = search;
  }

  public void startLocalSearch()
  {
    localSearch = true;
  }

  public void stopLocalSearch()
  {
    localSearch = false;

    configurationList = null;
  }

  /** Gestione Dettagli **/
  public void processDisclosure(int arg0) throws AbortProcessingException
  {
    // YOUR CODE GOES HERE
    // END OF YOUR CODE     
  }

  // YOUR CODE GOES HERE
  // END OF YOUR CODE     
}
TOP

Related Classes of ConfigurationManagerBean

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.