/**
- $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
}