[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3277) Null pointer exception related to URLScanner causing many skipped tests
by Jay Balunas (JIRA)
Null pointer exception related to URLScanner causing many skipped tests
-----------------------------------------------------------------------
Key: JBSEAM-3277
URL: https://jira.jboss.org/jira/browse/JBSEAM-3277
Project: Seam
Issue Type: Bug
Components: Core, Test Harness
Affects Versions: 2.1.0.A1
Reporter: Jay Balunas
Assignee: Norman Richards
Priority: Blocker
Fix For: 2.1.0.BETA1
All Seam hudson builds are showing a huge # of skipped tests with the exception below. It appears to have started with these changes http://fisheye.jboss.org/changelog/Seam/?cs=8713
See http://hudson.qa.jboss.com/hudson/view/Seam/job/Seam-trunk-CI/649 for more details.
[testng] FAILED CONFIGURATION: @BeforeSuite startSeam
[testng] org.jboss.seam.InstantiationException: Could not instantiate Seam component: org.jboss.seam.navigation.pages
[testng] at org.jboss.seam.Component.newInstance(Component.java:2041)
[testng] at org.jboss.seam.contexts.Contexts.startup(Contexts.java:304)
[testng] at org.jboss.seam.contexts.Contexts.startup(Contexts.java:278)
[testng] at org.jboss.seam.contexts.ServletLifecycle.endInitialization(ServletLifecycle.java:95)
[testng] at org.jboss.seam.init.Initialization.init(Initialization.java:631)
[testng] at org.jboss.seam.mock.AbstractSeamTest.startSeam(AbstractSeamTest.java:917)
[testng] at org.jboss.seam.mock.SeamTest.startSeam(SeamTest.java:58)
[testng] Caused by: java.lang.NullPointerException
[testng] at org.jboss.seam.deployment.URLScanner.handleDirectory(URLScanner.java:132)
[testng] at org.jboss.seam.deployment.URLScanner.handleDirectory(URLScanner.java:137)
[testng] at org.jboss.seam.deployment.URLScanner.handleDirectory(URLScanner.java:137)
[testng] at org.jboss.seam.deployment.URLScanner.handle(URLScanner.java:95)
[testng] at org.jboss.seam.navigation.Pages$PagesScanner.scanForPages(Pages.java:1635)
[testng] at org.jboss.seam.navigation.Pages$PagesDeploymentStrategy.scan(Pages.java:1676)
[testng] at org.jboss.seam.navigation.Pages.initialize(Pages.java:124)
[testng] at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
[testng] at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:126)
[testng] at org.jboss.seam.Component.callComponentMethod(Component.java:2146)
[testng] at org.jboss.seam.Component.callCreateMethod(Component.java:2069)
[testng] at org.jboss.seam.Component.newInstance(Component.java:2029)
[testng] ... 21 more
[testng] ... Removed 19 stack frames
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
17 years, 7 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3275) ClassCastException when rendering JSF page after long running query
by Giovanni Cosmiano (JIRA)
ClassCastException when rendering JSF page after long running query
-------------------------------------------------------------------
Key: JBSEAM-3275
URL: https://jira.jboss.org/jira/browse/JBSEAM-3275
Project: Seam
Issue Type: Bug
Components: EL
Affects Versions: 2.0.1.GA
Environment: JBoss 4.2.2GA, Seam 2.0.1GA, Richfaces 3.2.1
Reporter: Giovanni Cosmiano
Hello,
I'm getting this ClassCastException error after a long running query in which works just fine when querying subset data. It doesn't seem to appear as TM is timing out so I'm not sure what's happening but seems that during JSF rendering cycle it couldn't find the right object when referencing it thru EL or it found it from the wrong classloader context. Any help would be appreciated.
Thanks, Gio
2008-08-16 17:45:02,953 ERROR [STDERR] Aug 16, 2008 5:45:02 PM com.sun.facelets.FaceletViewHandler handleRenderException
SEVERE: Error Rendering View[/queries/QuerySupervisorPercentToPlanReport.xhtml]
javax.el.ELException: Error reading 'dataModelPagination' on type org.javassist.tmp.java.lang.Object_$$_javassist_15
at javax.el.BeanELResolver.getValue(BeanELResolver.java:66)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
at org.jboss.el.parser.AstPropertySuffix.getValue(AstPropertySuffix.java:53)
at org.jboss.el.parser.AstValue.getValue(AstValue.java:67)
at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
at org.jboss.seam.core.Expressions$1.getValue(Expressions.java:111)
at org.jboss.seam.navigation.Param.getStringValueFromModel(Param.java:133)
at org.jboss.seam.navigation.Pages.getStringValuesFromModel(Pages.java:690)
at org.jboss.seam.ui.component.UISeamCommandBase.getUrl(UISeamCommandBase.java:51)
at org.jboss.seam.ui.renderkit.LinkRendererBase.doEncodeBegin(LinkRendererBase.java:26)
at org.jboss.seam.ui.util.cdk.RendererBase.encodeBegin(RendererBase.java:79)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788)
at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:280)
at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:262)
at org.richfaces.renderkit.html.MenuItemRenderer.doEncodeEnd(MenuItemRenderer.java:269)
at org.richfaces.renderkit.html.MenuItemRenderer.doEncodeEnd(MenuItemRenderer.java:288)
at org.ajax4jsf.renderkit.RendererBase.encodeEnd(RendererBase.java:135)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:286)
at org.richfaces.renderkit.html.AbstractMenuRenderer.encodeItems(AbstractMenuRenderer.java:185)
at org.richfaces.renderkit.html.AbstractMenuRenderer.processLayer(AbstractMenuRenderer.java:152)
at org.richfaces.renderkit.html.AbstractMenuRenderer.encodeChildren(AbstractMenuRenderer.java:134)
at org.richfaces.renderkit.html.DropDownMenuRendererBase.encodeChildren(DropDownMenuRendererBase.java:115)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:282)
at org.richfaces.renderkit.html.ToolBarGroupRenderer.encodeChildren(ToolBarGroupRenderer.java:81)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:282)
at org.richfaces.renderkit.html.ToolBarRendererBase.encodeChildren(ToolBarRendererBase.java:104)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:189)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)
at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.ClassCastException: com.czncorp.cap.ccst.util.DataModelPagination
at $Proxy256.getDataModelPagination(Unknown Source)
at sun.reflect.GeneratedMethodAccessor788.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)
at org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideInterceptor.java:76)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
at org.jboss.seam.ejb.RemoveInterceptor.aroundInvoke(RemoveInterceptor.java:41)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
at org.jboss.seam.intercept.ClientSideInterceptor.invoke(ClientSideInterceptor.java:54)
at org.javassist.tmp.java.lang.Object_$$_javassist_15.getDataModelPagination(Object_$$_javassist_15.java)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccess
2008-08-16 17:45:02,960 ERROR [STDERR] orImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
... 81 more
<code>DataModelPagination class </code>
package com.czncorp.cap.ccst.util;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.DataModel;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.jsf.ListDataModel;
import com.czncorp.cap.ccst.Constants;
public class DataModelPagination<T>
implements java.io.Serializable {
protected int pageSize = 0;
protected int pageNumber = 0;
protected int totalPages = 0;
protected int totalRecords = 0;
protected List<T> dataList = null;
protected List<T> currentList = null;
protected String componentName = null;
protected DataModel dataModel = null;
private boolean firstLoad = false;
public DataModelPagination() {
}
public List<T> getDataList() {
return dataList;
}
public void setDataList(List<T> dataList) {
this.dataList = dataList;
}
public T getSelectedDataRow() {
DataModel dm = (ListDataModel)Contexts.getConversationContext().get(componentName);
return (T)dm.getRowData();
}
public T getSelectedDataFromDataModel() {
return (dataModel == null ? null : (T)dataModel.getRowData());
}
/*
* Check for firstLoad because of multiple calls to this method
* due to dataModelPagination.currentPage references in JSF pages
* such as 1st, next, previous, last and if empty
*
* firstLoad is always set to true every time the first page is loaded
* or going to a new page via next, previous, first or last page links
*
* Also, for some reason, the row selected from dataModel is not being
* returned to client using the method above,
* getDataModel().getSelectedDataFromDataModel(), but works
* just fine when its being managed by seam so I'm putting the dataModel
* on the conversational context then reference it from JSF pages as
* #{dmMaintainEntity} or #{dmQueryEntity} as oppose to referencing it
* using #{dataModelPagination.dataModel} ==> Gio Cosmiano
*
*/
public List<T> getCurrentPage() {
if (isFirstLoad()) {
setFirstLoad(false);
dataModel = null;
currentList = getPagedData();
if (currentList != null && currentList.size() > 0) {
dataModel = new ListDataModel(currentList);
Contexts.getConversationContext().set(componentName, dataModel);
}
}
return currentList;
}
private List<T> getPagedData() {
List<T> temp = null;
List<T> list = null;
if (dataList != null && dataList.size() > 0) {
temp = new ArrayList<T>();
list = new ArrayList<T>();
if (isLastPageAvailable()) {
temp = dataList.subList((pageNumber * pageSize), (pageNumber * pageSize) + pageSize);
} else {
temp = dataList.subList((pageNumber * pageSize), totalRecords);
}
/*
* List.subList returns a non-serializable objects so I'm dumping them
* to a temporary storage before returning them to clients
* http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4114571#4114571
*/
if (temp != null && temp.size() > 0) {
list.addAll(temp);
}
}
return list;
}
public void setPaginationSettings(List<T> list) {
setPaginationSettings(list, Constants.DEFAULT_MAX_PAGE_SIZE, Constants.ENTITY_DATA_MODEL);
}
public void setPaginationSettings(List<T> list, int maxPageSize) {
setPaginationSettings(list, maxPageSize, Constants.ENTITY_DATA_MODEL);
}
public void setPaginationSettings(List<T> list, String componentName) {
setPaginationSettings(list, Constants.DEFAULT_MAX_PAGE_SIZE, componentName);
}
public void setPaginationSettings(List<T> list, int pageSize, String componentName) {
setPageSize(pageSize);
setComponentName(componentName);
pageNumber = 0;
totalPages = 0;
totalRecords = 0;
dataList = list;
if (dataList != null && dataList.size() > 0) {
totalRecords = dataList.size();
totalPages = dataList.size() / this.pageSize;
if (this.pageSize > 0 && totalRecords % this.pageSize > 0)
totalPages++;
if (totalPages > 0)
totalPages--; // decrement by 1 for 0 based indexing
}
setFirstLoad(true);
getCurrentPage();
}
public void resetPaginationSize(int pageSize) {
setPageSize(pageSize);
pageNumber = 0;
totalPages = 0;
if (dataList != null && dataList.size() > 0) {
totalPages = dataList.size() / this.pageSize;
if (this.pageSize > 0 && totalRecords % this.pageSize > 0)
totalPages++;
if (totalPages > 0)
totalPages--; // decrement by 1 for 0 based indexing
}
setFirstLoad(true);
getCurrentPage();
}
public boolean isNextPageAvailable() {
return totalPages > 0 && pageNumber+1 < totalPages;
}
public boolean isPreviousPageAvailable() {
return totalPages > 0 && pageNumber-1 >= 1;
}
public boolean isFirstPageAvailable() {
return totalPages > 0 && pageNumber > 0;
}
public boolean isLastPageAvailable() {
return totalPages > 0 && pageNumber < totalPages;
}
public int getNextPage() {
if (isNextPageAvailable())
return pageNumber+1;
else
return pageNumber;
}
public int getPreviousPage() {
if (isPreviousPageAvailable())
return pageNumber-1;
else
return pageNumber;
}
public int getFirstPage() {
return 0;
}
public int getLastPage() {
return totalPages;
}
public int getPageSize() {
return this.pageSize;
}
public void setPageSize(int pageSize) {
if (pageSize <= 0)
pageSize = Constants.DEFAULT_MAX_PAGE_SIZE;
this.pageSize = pageSize;
}
public int getPageNumber() {
return this.pageNumber;
}
public void setPageNumber(int pageNumber) {
if (pageNumber >= 0 && pageNumber <= this.totalPages) {
this.pageNumber = pageNumber;
} else {
this.pageNumber = 0;
}
setFirstLoad(true);
getCurrentPage();
}
public int getTotalPages() {
return this.totalPages;
}
public int getTotalRecords() {
return this.totalRecords;
}
public String getComponentName() {
return this.componentName;
}
public void setComponentName(String componentName) {
if (componentName == null || componentName.length() == 0 || "".equals(componentName))
componentName = Constants.ENTITY_DATA_MODEL;
this.componentName = componentName;
}
public DataModel getDataModel() {
return dataModel;
}
public void setDataModel(DataModel dataModel) {
this.dataModel = dataModel;
}
public boolean isFirstLoad() {
return firstLoad;
}
public void setFirstLoad(boolean firstLoad) {
this.firstLoad = firstLoad;
}
}
<code> QuerySupervisorPercentToPlanReportBeanImpl</code>
package com.czncorp.cap.ccst.ejb;
import com.czncorp.cap.ccst.ejb.entity.*;
import com.czncorp.cap.ccst.util.DetailSummarization;
import com.czncorp.cap.ccst.Constants;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import java.math.BigDecimal;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.ArrayList;
import javax.annotation.PostConstruct;
import javax.ejb.Stateful;
@Stateful
@Scope(ScopeType.CONVERSATION)
@Name("querySupervisorPercentToPlanReportBeanImpl")
public class QuerySupervisorPercentToPlanReportBeanImpl
extends QueryCompletedOrdersReportBeanBase<QueryPercentToPlanReport>
implements QueryCompletedOrdersReportBean<QueryPercentToPlanReport> {
private static final String RENDER_PAGE = "/queries/QuerySupervisorPercentToPlanReport.xhtml";
private static final String DM_SPV_PRODUCT_MIX_DETAILS = "dmQuerySupervisorProductMixDetails";
private static final String DM_SPV_PERCENT_TO_PLAN_DETAILS = "dmQuerySupervisorPercentToPlanDetails";
private static final String DM_CONSLT_PRODUCT_MIX_SUB_SUMMARY = "dmQuerySupervisorConsultantProductMixSubSummary";
public QuerySupervisorPercentToPlanReportBeanImpl() {
}
@Override
@PostConstruct
public void initBean() {
super.initBean();
dropDownListings.setPersonnelLevel(Constants.PERSONNEL_LEVEL_SUPERVISOR);
dropDownListings.setAddEmptyItemSupervisor(true);
dropDownListings.buildSupervisorDropDownList();
}
public String generateResultQueryList() {
BigDecimal id = null;
List<QueryPercentToPlanReport> result0 = null;
List<QueryProductMixCalculate> result1 = null;
QueryPercentToPlanReport summaryPercentToPlan = null;
QueryProductMixCalculate summaryProductMix = null;
List<QueryProductMixCalculate> result3 = null;
List<QueryProductMixCalculate> result4 = null;
List<DetailSummarization<QueryProductMixCalculate>> consultantProdMixSubSummary = null;
DetailSummarization<QueryProductMixCalculate> subSummary = null;
Calendar frCalDate = new GregorianCalendar();
Calendar toCalDate = new GregorianCalendar();
Calendar currMonth = new GregorianCalendar();
currMonth.set(Calendar.DAY_OF_MONTH, 1);
Connection conn = null;
CallableStatement sp = null;
SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MMM-yy");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMM");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyyMMdd");
String runType = null;
String frDate = null;
String toDate = null;
int regionID = dropDownListings.getRegionID();
int callcenterID = dropDownListings.getCallcenterID();
int personnelID = dropDownListings.getSupervisorID();
int periodID = dropDownListings.getPeriodID();
try {
if (regionID > 0 && callcenterID > 0 && personnelID > 0 &&
periodID > 0 && periodID != Constants.UNDEF_PERIOD) {
frCalDate.setTime(sdf3.parse(Integer.valueOf(periodID).toString()));
frCalDate.set(Calendar.DAY_OF_MONTH, 1);
toCalDate.setTime(frCalDate.getTime());
toCalDate.add(Calendar.MONTH, 1);
toCalDate.add(Calendar.DAY_OF_MONTH, -1);
frDate = sdf1.format(frCalDate.getTime());
toDate = sdf1.format(toCalDate.getTime());
if (sdf2.format(currMonth.getTime()).equalsIgnoreCase(sdf2.format(frCalDate.getTime()))) {
runType = Constants.CURR_MONTH;
} else {
runType = Constants.PRIOR_MONTH;
}
log.debug("runType==#0; frDate== #1; toDate==#2; region==#3; callCenter==#4; personnel==#5",
runType, frDate, toDate, regionID, callcenterID, personnelID);
conn = ds.getConnection();
sp = conn.prepareCall("{call CCST.PERCENT_TO_PLAN_RCSV (?, ?, ?, ?, ?, ?, ?)}");
sp.setString(1, runType);
sp.setString(2, frDate);
sp.setString(3, toDate);
sp.setDouble(4, personnelID);
sp.registerOutParameter(5, java.sql.Types.DOUBLE);
sp.setString(6, Constants.ALL_DATA);
sp.setString(7, Constants.ALL_DATA);
sp.executeUpdate();
id = sp.getBigDecimal(5);
log.debug("retrieve seq==#0", id.toString());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sp != null) {
try { sp.close(); } catch (Exception e) {}
}
if (conn != null) {
try { conn.close(); } catch (Exception e) {}
}
}
try {
if (id != null) {
result0 = entityManager
.createNamedQuery(PERCENT_TO_PLAN_QUERY_CONSULTANT_SUMMARY)
.setParameter("id", id)
.setParameter("summary_seq", Constants.SUMMARY_SEQ)
.getResultList();
summaryPercentToPlan = (QueryPercentToPlanReport)entityManager
.createNamedQuery(PERCENT_TO_PLAN_QUERY_SUPERVISOR_SUMMARY)
.setParameter("id", id)
.setParameter("summary_seq", Constants.SUMMARY_SEQ)
.getSingleResult();
// sort by consultant name
if (result0 != null && result0.size() > 0) {
Collections.sort(result0, new Comparator<QueryPercentToPlanReport>() {
public int compare(QueryPercentToPlanReport o1, QueryPercentToPlanReport o2) {
String name1 = (o1.getId().getConsultantLastName() == null ? "" : o1.getId().getConsultantLastName()) + ", " +
(o1.getId().getConsultantFirstName() == null ? "" : o1.getId().getConsultantFirstName());
String name2 = (o2.getId().getConsultantLastName() == null ? "" : o2.getId().getConsultantLastName()) + ", " +
(o2.getId().getConsultantFirstName() == null ? "" : o2.getId().getConsultantFirstName());
return name1.compareTo(name2);
}
}
);
}
// get the consultants product mix calculated data
consultantProdMixSubSummary = new ArrayList<DetailSummarization<QueryProductMixCalculate>>();
result3 = entityManager
.createNamedQuery(PRODUCT_MIX_CALCULATE_CONSULTANT_SUB_SUMMARY)
.setParameter("id", id)
.setParameter("personnel_seq", new BigDecimal(personnelID))
.setParameter("summary_seq", Constants.SUMMARY_SEQ)
.getResultList();
if (result3 != null && result3.size() > 0) {
for (QueryProductMixCalculate obj : result3) {
result4 = entityManager
.createNamedQuery(PRODUCT_MIX_CALCULATE_CONSULTANT_SUB_DETAILS)
.setParameter("id", id)
.setParameter("personnel_seq", new BigDecimal(obj.getId().getPersonnelSeq().intValue()))
.setParameter("summary_seq", Constants.SUMMARY_SEQ)
.getResultList();
if (result4 != null && result4.size() > 0) {
Collections.sort(result4, new Comparator<QueryProductMixCalculate>() {
public int compare(QueryProductMixCalculate o1, QueryProductMixCalculate o2) {
return -(o1.getId().getRevenue().intValue() - o2.getId().getRevenue().intValue());
}
}
);
}
subSummary = new DetailSummarization<QueryProductMixCalculate>();
subSummary.setSummary(obj);
subSummary.setDetails(result4);
consultantProdMixSubSummary.add(subSummary);
}
if (consultantProdMixSubSummary != null && consultantProdMixSubSummary.size() > 0) {
Collections.sort(consultantProdMixSubSummary, new Comparator<DetailSummarization<QueryProductMixCalculate>>() {
public int compare(DetailSummarization<QueryProductMixCalculate> o1, DetailSummarization<QueryProductMixCalculate> o2) {
String name1 = (o1.getSummary().getId().getLastName() == null ? "" : o1.getSummary().getId().getLastName()) + ", " +
(o1.getSummary().getId().getFirstName() == null ? "" : o1.getSummary().getId().getFirstName());
String name2 = (o2.getSummary().getId().getLastName() == null ? "" : o2.getSummary().getId().getLastName()) + ", " +
(o2.getSummary().getId().getFirstName() == null ? "" : o2.getSummary().getId().getFirstName());
return name1.compareTo(name2);
}
}
);
}
}
// get the product mix calculated data
result1 = entityManager
.createNamedQuery(PRODUCT_MIX_CALCULATE_QUERY_SUPERVISOR_DETAILS)
.setParameter("id", id)
.setParameter("personnel_seq", new BigDecimal(personnelID))
.getResultList();
summaryProductMix = (QueryProductMixCalculate)entityManager
.createNamedQuery(PRODUCT_MIX_CALCULATE_QUERY_SUPERVISOR_SUMMARY)
.setParameter("id", id)
.setParameter("personnel_seq", new BigDecimal(personnelID))
.setParameter("summary_seq", Constants.SUMMARY_SEQ)
.getSingleResult();
// sort by revenue in descending order
if (result1 != null && result1.size() > 0) {
Collections.sort(result1, new Comparator<QueryProductMixCalculate>() {
public int compare(QueryProductMixCalculate o1, QueryProductMixCalculate o2) {
return -(o1.getId().getRevenue().intValue() - o2.getId().getRevenue().intValue());
}
}
);
}
log.debug("\nRetrieve seq==#0" +
"\nSupervisorPercentToPlanDetails rows==#1" +
"\nSupervisorPercentToPlanSummary found==#2" +
"\nProdMixDetail rows==#3" +
"\nProdMixSummary found==#4",
id.toString(), result0.size(), (summaryPercentToPlan == null ? "false" : "true"),
result1.size(), (summaryProductMix == null ? "false" : "true"));
}
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
}
resultPercentToPlanQuerySummary = summaryPercentToPlan;
resultProductMixSummary = summaryProductMix;
dmPercentToPlanDetails.setPaginationSettings(result0, Constants.PageSizeOptions.ALL.getSize(), DM_SPV_PERCENT_TO_PLAN_DETAILS);
dmProductMixDetails.setPaginationSettings(result1, Constants.PageSizeOptions.ALL.getSize(), DM_SPV_PRODUCT_MIX_DETAILS);
dmConsultantProductMixSubSummary.setPaginationSettings(consultantProdMixSubSummary, Constants.DEFAULT_SUMMARY_PAGE_SIZE, DM_CONSLT_PRODUCT_MIX_SUB_SUMMARY);
return RENDER_PAGE;
}
}
<code> QuerySupervisorPercentToPlanReport.xhtml </code>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
template="/layout/template.xhtml">
<ui:define name="body">
<h:panelGrid columns="1" frame="none" id="mainPanel"
class="mainPanel" border="0">
<h:messages globalOnly="true" styleClass="message" id="globalMessages"/>
<h:form id="querySupervisorPercentToPlanReportSearch" styleClass="edit">
<rich:panel headerClass="header-panel">
<f:facet name="header">
<h:outputText value="Supervisor Percent To Plan Search Parameters"/>
</f:facet>
<h:panelGrid columns="1" frame="none" id="searchPanel"
class="mainPanel" border="0">
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Region</ui:define>
<h:selectOneMenu id="regionID" value="#{querySupervisorPercentToPlanReport.dropDownListings.regionID}" required="true">
<f:selectItems id="regionDropDownList" value="#{querySupervisorPercentToPlanReport.dropDownListings.regionDropDownList}" />
<a4j:support event="onchange" reRender="callcenterID,supervisorID" ajaxSingle="true"
action="#{querySupervisorPercentToPlanReport.dropDownListings.buildCallCenterDropDownList}"/>
</h:selectOneMenu>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Call Center</ui:define>
<h:selectOneMenu id="callcenterID" value="#{querySupervisorPercentToPlanReport.dropDownListings.callcenterID}" required="true"
disabled="#{querySupervisorPercentToPlanReport.dropDownListings.regionID == 0}">
<f:selectItems id="callCenterDropDownList" value="#{querySupervisorPercentToPlanReport.dropDownListings.callCenterDropDownList}" />
<a4j:support event="onchange" reRender="supervisorID" ajaxSingle="true"
action="#{querySupervisorPercentToPlanReport.dropDownListings.buildSupervisorDropDownList}"/>
</h:selectOneMenu>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Supervisor</ui:define>
<h:selectOneMenu id="supervisorID" value="#{querySupervisorPercentToPlanReport.dropDownListings.supervisorID}" required="true"
disabled="#{querySupervisorPercentToPlanReport.dropDownListings.regionID == 0 || querySupervisorPercentToPlanReport.dropDownListings.callcenterID == 0}" >
<f:selectItems id="supervisorDropDownList" value="#{querySupervisorPercentToPlanReport.dropDownListings.supervisorDropDownList}" />
</h:selectOneMenu>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Period</ui:define>
<h:selectOneMenu id="periodID" value="#{querySupervisorPercentToPlanReport.dropDownListings.periodID}" required="true">
<s:selectItems id="periodDropDownList" value="#{querySupervisorPercentToPlanReport.dropDownListings.periodDropDownList}"
var="list" itemValue="#{list.value}" label="#{list.label}" />
</h:selectOneMenu>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<div class="actionButtons">
<h:commandButton id="search" value="Search"
action="#{querySupervisorPercentToPlanReport.generateResultQueryList}" />
</div>
</s:decorate>
<a4j:status>
<f:facet name="start">
<h:graphicImage value="/images/ajax_status_rotating_orange.gif"/>
</f:facet>
</a4j:status>
</h:panelGrid>
</rich:panel>
</h:form>
<br/>
<rich:panel headerClass="header-panel">
<f:facet name="header">
<h:outputText value="Supervisor Percent To Plan Report"/>
</f:facet>
<h:form id="querySupervisorPercentToPlanReportListing" styleClass="edit">
<div class="results" id="querySupervisorPercentToPlanReport" >
<h:outputText value="Supervisor Percent To Plan Report search returned no results."
rendered="#{empty querySupervisorPercentToPlanReport.dmPercentToPlanDetails.currentPage}"/>
<rich:dataTable var="record" id="querySupervisorPercentToPlanReport"
value="#{dmQuerySupervisorPercentToPlanDetails}"
rendered="#{not empty querySupervisorPercentToPlanReport.dmPercentToPlanDetails.currentPage}"
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
cellpadding="0" cellspacing="0"
width="700" border="0"
>
<h:column>
<f:facet name="header">
<h:outputText value="Consultant" styleClass="columnHeader"/>
</f:facet>
#{record.id.consultantLastName}, #{record.id.consultantFirstName}
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Rev/Call" styleClass="columnHeader"/>
</f:facet>
<h:outputText value="#{record.id.avgRevenuePerCall}" >
<f:convertNumber type="currency" currencySymbol="$"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Calls/Hour" styleClass="columnHeader"/>
</f:facet>
<h:outputText value="#{record.id.noOfCallsPerHour}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="% Available" styleClass="columnHeader"/>
</f:facet>
<h:outputText value="#{record.id.mtdPctAvailable}%" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Actual Sold" styleClass="columnHeader"/>
</f:facet>
<h:outputText value="#{record.id.actualSoldValue}" >
<f:convertNumber type="currency" currencySymbol="$"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Commission" styleClass="columnHeader"/>
</f:facet>
<h:outputText value="#{record.id.commission}" >
<f:convertNumber type="currency" currencySymbol="$"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="ACD Date" styleClass="columnHeader"/>
</f:facet>
<h:outputText value="#{record.id.mtdFileDate}" >
<s:convertDateTime pattern="MM-dd-yyyy"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Avail Time" styleClass="columnHeader"/>
</f:facet>
<h:outputText value="#{record.id.mtdAvailableTime}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="SignOn Hours" styleClass="columnHeader"/>
</f:facet>
<h:outputText value="#{record.id.mtdSignOnHours}" >
<f:convertNumber pattern="###,###,##0"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Incoming Calls" styleClass="columnHeader"/>
</f:facet>
<h:outputText value="#{record.id.mtdIncomingCalls}" >
<f:convertNumber pattern="###,###,##0"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="MTD Adj Calls" styleClass="columnHeader"/>
</f:facet>
<h:outputText value="#{record.id.mtdAdjustedCallTotal}" >
<f:convertNumber pattern="###,###,##0"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Compensation Type" styleClass="columnHeader"/>
</f:facet>
#{record.id.compensationTypeDesc}
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="% To Plan" styleClass="columnHeader"/>
</f:facet>
<h:outputText value="#{record.id.percentToPlan}%" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Quota" styleClass="columnHeader"/>
</f:facet>
<h:outputText value="#{record.id.quotaValue}" >
<f:convertNumber type="currency" currencySymbol="$"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="AHT" styleClass="columnHeader"/>
</f:facet>
<h:outputText value="#{record.id.aht}" >
<f:converter converterId="cnv.AvgHandlingTime"/>
</h:outputText>
</h:column>
</rich:dataTable>
</div>
</h:form>
</rich:panel>
<br/>
<rich:panel headerClass="header-panel"
rendered="#{not empty querySupervisorPercentToPlanReport.dmConsultantProductMixSubSummary.currentPage}" >
<f:facet name="header">
<h:outputText value="Consultant Product Mix Totals"/>
</f:facet>
<h:form id="queryConsultantSubSummaryReportListing" styleClass="edit">
<div class="results" id="queryConsultantProdMixSubDetails" >
<rich:dataTable var="record" id="queryConsultantProdMixSubDetails"
value="#{dmQuerySupervisorConsultantProductMixSubSummary}"
rendered="#{not empty querySupervisorPercentToPlanReport.dmConsultantProductMixSubSummary.currentPage}"
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
cellpadding="0" cellspacing="0"
width="700" border="0"
>
<f:facet name="header">
<rich:columnGroup>
<rich:column><h:outputText value="Consultant" styleClass="columnHeader"/></rich:column>
<rich:column><h:outputText value="Product Mix" styleClass="columnHeader"/></rich:column>
<rich:column><h:outputText value="Revenue" styleClass="columnHeader"/></rich:column>
<!--
<rich:column><h:outputText value="Units" styleClass="columnHeader"/></rich:column>
<rich:column><h:outputText value="Revenue" styleClass="columnHeader"/></rich:column>
<rich:column><h:outputText value="% to Revenue" styleClass="columnHeader"/></rich:column>
-->
</rich:columnGroup>
</f:facet>
<rich:column colspan="3">
<h:outputText value="#{record.summary.id.lastName}, #{record.summary.id.firstName}" />
</rich:column>
<rich:subTable var="record2" value="#{record.details}"
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'" >
<rich:column>
<rich:spacer />
<f:facet name="footer">
<h:outputText value="Totals for #{record.summary.id.lastName}, #{record.summary.id.firstName}" />
</f:facet>
</rich:column>
<rich:column>
<h:outputText value="#{record2.id.productMixDesc}" />
<f:facet name="footer">
<rich:spacer />
</f:facet>
</rich:column>
<!--
<rich:column>
<h:outputText value="#{record2.id.units}" >
<f:convertNumber pattern="###,###,##0"/>
</h:outputText>
<f:facet name="footer">
<h:outputText value="#{record.summary.id.units}" >
<f:convertNumber pattern="###,###,##0"/>
</h:outputText>
</f:facet>
</rich:column>
-->
<rich:column>
<h:outputText value="#{record2.id.revenue}" >
<f:convertNumber type="currency" currencySymbol="$" />
</h:outputText>
<f:facet name="footer">
<h:outputText value="#{record.summary.id.revenue}" >
<f:convertNumber type="currency" currencySymbol="$" />
</h:outputText>
</f:facet>
</rich:column>
<!--
<rich:column>
<h:outputText value="#{record2.id.percentToRevenue}%" />
<f:facet name="footer">
<rich:spacer />
</f:facet>
</rich:column>
-->
</rich:subTable>
<f:facet name="footer">
<rich:columnGroup>
<rich:column>
<h:outputText value="Totals"/>
</rich:column>
<rich:column><rich:spacer/></rich:column>
<!--
<rich:column>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultProductMixSummary.id.units}" >
<f:convertNumber pattern="###,###,##0"/>
</h:outputText>
</rich:column>
-->
<rich:column>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultProductMixSummary.id.revenue}" >
<f:convertNumber type="currency" currencySymbol="$" />
</h:outputText>
</rich:column>
<!--
<rich:column><rich:spacer/></rich:column>
-->
</rich:columnGroup>
</f:facet>
</rich:dataTable>
</div>
<div class="tableControl">
<h:outputText value="Page #{querySupervisorPercentToPlanReport.dmConsultantProductMixSubSummary.pageNumber + 1} of #{querySupervisorPercentToPlanReport.dmConsultantProductMixSubSummary.totalPages + 1}"
rendered="#{not empty querySupervisorPercentToPlanReport.dmConsultantProductMixSubSummary.currentPage}" />
<s:link view="/queries/QuerySupervisorPercentToPlanReport.xhtml"
rendered="#{querySupervisorPercentToPlanReport.dmConsultantProductMixSubSummary.firstPageAvailable}"
value="#{messages.left}#{messages.left} First Page"
id="firstPage">
<f:param name="pageNumber" value="0"/>
</s:link>
<s:link view="/queries/QuerySupervisorPercentToPlanReport.xhtml"
rendered="#{querySupervisorPercentToPlanReport.dmConsultantProductMixSubSummary.previousPageAvailable}"
value="#{messages.left} Previous Page"
id="previousPage">
<f:param name="pageNumber"
value="#{querySupervisorPercentToPlanReport.dmConsultantProductMixSubSummary.previousPage}"/>
</s:link>
<s:link view="/queries/QuerySupervisorPercentToPlanReport.xhtml"
rendered="#{querySupervisorPercentToPlanReport.dmConsultantProductMixSubSummary.nextPageAvailable}"
value="Next Page #{messages.right}"
id="nextPage">
<f:param name="pageNumber"
value="#{querySupervisorPercentToPlanReport.dmConsultantProductMixSubSummary.nextPage}"/>
</s:link>
<s:link view="/queries/QuerySupervisorPercentToPlanReport.xhtml"
rendered="#{querySupervisorPercentToPlanReport.dmConsultantProductMixSubSummary.lastPageAvailable}"
value="Last Page #{messages.right}#{messages.right}"
id="lastPage">
<f:param name="pageNumber"
value="#{querySupervisorPercentToPlanReport.dmConsultantProductMixSubSummary.lastPage}"/>
</s:link>
</div>
</h:form>
</rich:panel>
<br/>
<rich:panel headerClass="header-panel"
rendered="#{not empty querySupervisorPercentToPlanReport.dmPercentToPlanDetails.currentPage}" >
<f:facet name="header">
<h:outputText value="Supervisor Product Mix Report"/>
</f:facet>
<h:form id="querySupervisorProductMixListing" styleClass="edit">
<div class="results" id="querySupervisorPercentToPlanReportProdMix" >
<rich:dataTable var="record" id="querySupervisorPercentToPlanReportProdMix"
value="#{dmQuerySupervisorProductMixDetails}"
rendered="#{not empty querySupervisorPercentToPlanReport.dmProductMixDetails.currentPage}"
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
cellpadding="0" cellspacing="0"
width="700" border="0"
>
<f:facet name="header">
<rich:columnGroup>
<rich:column><h:outputText value="Product Mix" styleClass="columnHeader"/></rich:column>
<rich:column><h:outputText value="Revenue" styleClass="columnHeader"/></rich:column>
<!--
<rich:column><h:outputText value="Units" styleClass="columnHeader"/></rich:column>
<rich:column><h:outputText value="Revenue" styleClass="columnHeader"/></rich:column>
<rich:column><h:outputText value="% to Revenue" styleClass="columnHeader"/></rich:column>
-->
</rich:columnGroup>
</f:facet>
<rich:column>
<h:outputText value="#{record.id.productMixDesc}" />
</rich:column>
<!--
<rich:column>
<h:outputText value="#{record.id.units}" >
<f:convertNumber pattern="###,###,##0"/>
</h:outputText>
</rich:column>
-->
<rich:column>
<h:outputText value="#{record.id.revenue}" >
<f:convertNumber type="currency" currencySymbol="$" />
</h:outputText>
</rich:column>
<!--
<rich:column>
<h:outputText value="#{record.id.percentToRevenue}%" />
</rich:column>
-->
<f:facet name="footer">
<rich:columnGroup>
<rich:column>
<h:outputText value="Totals"/>
</rich:column>
<!--
<rich:column>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultProductMixSummary.id.units}" >
<f:convertNumber pattern="###,###,##0"/>
</h:outputText>
</rich:column>
-->
<rich:column>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultProductMixSummary.id.revenue}" >
<f:convertNumber type="currency" currencySymbol="$" />
</h:outputText>
</rich:column>
<!--
<rich:column><rich:spacer/></rich:column>
-->
</rich:columnGroup>
</f:facet>
</rich:dataTable>
</div>
</h:form>
</rich:panel>
<br/>
<rich:panel headerClass="header-panel"
rendered="#{not empty querySupervisorPercentToPlanReport.dmPercentToPlanDetails.currentPage}" >
<f:facet name="header">
<h:outputText value="Supervisor Percent To Plan Summary Report"/>
</f:facet>
<div class="results" id="querySupervisorPercentToPlanReportSummary">
<h:panelGrid columns="3" rules="all" frame="border"
id="querySupervisorPercentToPlanReportSummary" class="summaryControl"
rendered="#{not empty querySupervisorPercentToPlanReport.resultPercentToPlanSummary}"
styleClass="columnHeader" >
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Available Time :</ui:define>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultPercentToPlanSummary.id.mtdAvailableTime}" >
<f:convertNumber pattern="###,###,##0"/>
</h:outputText>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Sign on hours :</ui:define>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultPercentToPlanSummary.id.mtdSignOnHours}" >
<f:convertNumber pattern="###,###,##0"/>
</h:outputText>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Percent Available :</ui:define>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultPercentToPlanSummary.id.mtdPctAvailable}%" />
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">MTD Incoming Calls :</ui:define>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultPercentToPlanSummary.id.mtdIncomingCalls}" >
<f:convertNumber pattern="###,###,##0"/>
</h:outputText>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">MTD Adjusted Calls :</ui:define>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultPercentToPlanSummary.id.mtdAdjustedCallTotal}" >
<f:convertNumber pattern="###,###,##0"/>
</h:outputText>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Number of calls / hour :</ui:define>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultPercentToPlanSummary.id.noOfCallsPerHour}" />
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Rev/Call Revenue :</ui:define>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultPercentToPlanSummary.id.revcallRevenue}" >
<f:convertNumber type="currency" currencySymbol="$"/>
</h:outputText>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Rev / Call :</ui:define>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultPercentToPlanSummary.id.avgRevenuePerCall}" >
<f:convertNumber type="currency" currencySymbol="$" />
</h:outputText>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label"/>
<h:outputText value="" />
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Total Revenue :</ui:define>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultPercentToPlanSummary.id.actualSoldValue}" >
<f:convertNumber type="currency" currencySymbol="$"/>
</h:outputText>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Commission :</ui:define>
<h:outputText value="#{querySupervisorPercentToPlanReport.resultPercentToPlanSummary.id.commission}" >
<f:convertNumber type="currency" currencySymbol="$"/>
</h:outputText>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label"/>
<h:outputText value="" />
</s:decorate>
</h:panelGrid>
</div>
</rich:panel>
</h:panelGrid>
</ui:define>
</ui:composition>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
17 years, 7 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3107) Jbpm.installPageflowDefinitions() changes order of pageflowDefinitions
by Wolfgang Schwendt (JIRA)
Jbpm.installPageflowDefinitions() changes order of pageflowDefinitions
----------------------------------------------------------------------
Key: JBSEAM-3107
URL: http://jira.jboss.com/jira/browse/JBSEAM-3107
Project: Seam
Issue Type: Bug
Environment: Seam 2.1 SVN trunk
Reporter: Wolfgang Schwendt
Priority: Blocker
Fix For: 2.1.0.BETA2
current code in Seam 2.1. SVN-based trunk:
org.jboss.seam.bpm.Jbpm
private void installPageflowDefinitions() {
Set<String> mergedPageflowDefinitions = new TreeSet<String>();
Set semantics is wrong here. In order to fix the bug described below, please change to
ArrayList<String> mergedPageflowDefinitions = new ArrayList<String>();
Reason:
when jPDL tries to parse pageflow with a <process-state> that calls a sub pageflow via a <sub-process name="subpageflow"/> child element, it can only parse the process-state if the subpageflow was parsed already. See org.jbpm.graph.node.ProcessState.read(). If the subpageflow was NOT parsed already before the <process state> of the parent pageflow gets parsed, jBPM's SubProcessResolver throws a null pointer exception (NPE). Hence, to avoid a NPE, we have have to list all included pageflows in a partial order in components.xml: The pageflows first listed are the included subpageflows, the pageflows listed last are the parent pageflows which call the preceding subpageflows.
Now, if installPageflowDefinitions() puts the names of these pageflow definition files in a set (rather than list), the order gets lost and in turn the likelihood increases that jBPM's SubProcessResolver throws a null pointer exception.
<!--Pageflow definition in a special order with subpageflows listed first ->
<bpm:jbpm>
<bpm:process-definitions></bpm:process-definitions>
<bpm:pageflow-definitions>
<value>/WEB-INF/benutzerKontoEroeffnen.jpdl.xml</value>
<value>/WEB-INF/beimSystemAnmelden.jpdl.xml</value>
<value>/WEB-INF/beimSystemAnmeldenTopLevel.jpdl.xml</value>
<value>/WEB-INF/aufWartelisteSetzen.jpdl.xml</value>
<value>/WEB-INF/persoenlicheDatenBearbeiten.jpdl.xml</value>
<value>/WEB-INF/zumSeminarAnmelden.jpdl.xml</value>
<value>/WEB-INF/seminarSuche.jpdl.xml</value>
<value>/WEB-INF/seminardatenBearbeiten.jpdl.xml</value>
<value>/WEB-INF/seminarbelegungenEinsehen.jpdl.xml</value>
</bpm:pageflow-definitions>
</bpm:jbpm>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
17 years, 7 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3271) Exceptions handled by pages.xml with no viewId defined in the redirect element fail
by Scott Olcott (JIRA)
Exceptions handled by pages.xml with no viewId defined in the redirect element fail
-----------------------------------------------------------------------------------
Key: JBSEAM-3271
URL: https://jira.jboss.org/jira/browse/JBSEAM-3271
Project: Seam
Issue Type: Bug
Affects Versions: 2.1.0.A1, 2.0.3.CR1, 2.0.2.SP1
Environment: tomcat/jbpm
Reporter: Scott Olcott
When I define an exception in pages.xml with not viewId on the redirect like following:
<exception class="org.hibernate.exception.ConstraintViolationException">
<redirect>
<message>There was a unique constraint exception.</message>
</redirect>
</exception>
I get the following stack trace:
javax.el.ELException: Expression cannot be null
at org.jboss.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:92)
at org.jboss.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:151)
at org.jboss.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:195)
at org.jboss.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:68)
at org.jboss.seam.el.SeamExpressionFactory.createValueExpression(SeamExpressionFactory.java:98)
at org.jboss.seam.core.Expressions$1.createExpression(Expressions.java:106)
at org.jboss.seam.core.Expressions$1.toUnifiedValueExpression(Expressions.java:98)
at org.jboss.seam.core.Expressions$1.getValue(Expressions.java:111)
at org.jboss.seam.exception.ConfigRedirectHandler.getViewId(ConfigRedirectHandler.java:50)
at org.jboss.seam.exception.RedirectHandler.handle(RedirectHandler.java:33)
at org.jboss.seam.exception.Exceptions.handle(Exceptions.java:75)
at org.jboss.seam.web.ExceptionFilter.endWebRequestAfterException(ExceptionFilter.java:114)
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:70)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:150)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:379)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:506)
at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:636)
This should work and just redirect to the current page. Section 6.11.5. in the documentation demonstrates this for AuthorizationException.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
17 years, 7 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3248) If not using EJBs, and not using JNDI datasource (thanks to Spring) then Seam Test fail with a hard to understand message
by Francisco Jose Peredo Noguez (JIRA)
If not using EJBs, and not using JNDI datasource (thanks to Spring) then Seam Test fail with a hard to understand message
--------------------------------------------------------------------------------------------------------------------------
Key: JBSEAM-3248
URL: https://jira.jboss.org/jira/browse/JBSEAM-3248
Project: Seam
Issue Type: Feature Request
Components: Test Harness
Affects Versions: 2.0.2.GA
Reporter: Francisco Jose Peredo Noguez
When developing Seam integration tests if you aren't deploying EJBs, then you don't need the container to deploy archives which contain EJBs. But if you have org.jboss.embedded.Bootstrap.class in the classpath, and you are using a datasource configured with Spring (and without JDNI) you will get this error:
persistence.units:unitName=webappsbmi-test -> java.lang.RuntimeException: Specification violation [EJB3 JPA 6.2.1.2] - You have not defined a non-jta-data-source for a RESOURCE_LOCAL enabled persistence context named: webappsbmi-test
Instead of that, it should send an error saying something like: "As you aren't deploying EJBs, and you are not using a JNDI datasource then you don't need the container to deploy archives which contain EJBs." (I wasted a lot of time trying to find out what was happening)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
17 years, 7 months