I want to update 2nd field based on first field date entered by user. To achieve that, I am using the ItemPropertyChangeListener. But getting null pointer exception
journalDs.addItemPropertyChangeListener(e -> {
if ("docDate".equals(e.getProperty())) {
Date date = e.getItem().getDocDate();
Company company = e.getItem().getCompany();
if (date != null) {
if (company != null) {
FinancialPeriod pd = inteaccUtilService.getFinancialPeriodFromDate(company,date);
if (pd.equals(null)){
showMessageDialog("WARNING", "Invalid Date entered ...",
MessageType.WARNING);
} else {
financialYearField.setValue((FinancialYear)pd.getFinancialYear());
financialPeriodField.setValue(pd);
}
}
}
}
});
my service bean code is here
@Override
@Transactional
public FinancialPeriod getFinancialPeriodFromDate(Company company, Date date){
EntityManager em = persistence.getEntityManager();
String queryString1 = "select e from inteaccutil$FinancialPeriod e where (?1 BETWEEN e.dateFrom AND e.dateTo) " +
"AND e.financialYear.company.id = ?2";
TypedQuery<FinancialPeriod> query = em.createQuery(queryString1, FinancialPeriod.class);
query.setParameter(1, date);
query.setParameter(2, company.getId());
query.setView(FinancialPeriod.class, "financialPeriodYear-view");
if (query.getFirstResult()==null){
return null;
} else {
return (FinancialPeriod) query.getFirstResult();
}
}
java.lang.NullPointerException
at com.inteacc.erp.web.journal.JournalEdit.lambda$init$0(JournalEdit.java:76)
at com.haulmont.bali.events.EventRouter.fireEvent(EventRouter.java:45)
at com.haulmont.cuba.gui.data.impl.AbstractDatasource$ItemListener.propertyChanged(AbstractDatasource.java:306)
at com.haulmont.chile.core.model.impl.AbstractInstance.propertyChanged(AbstractInstance.java:51)
at com.inteacc.erp.entity.acct.Journal.setDocDate(Journal.java:131)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.haulmont.chile.core.model.utils.MethodsCache.invokeSetter(MethodsCache.java:59)
at com.haulmont.chile.core.model.impl.AbstractInstance.setValue(AbstractInstance.java:134)
at com.haulmont.cuba.core.entity.BaseGenericIdEntity.setValue(BaseGenericIdEntity.java:131)
at com.haulmont.chile.core.model.impl.AbstractInstance.setValue(AbstractInstance.java:117)
at com.haulmont.chile.core.model.utils.InstanceUtils.setValueEx(InstanceUtils.java:179)
at com.haulmont.cuba.web.gui.components.WebDateField.updateInstance(WebDateField.java:362)
at com.haulmont.cuba.web.gui.components.WebDateField.lambda$createDateValueChangeListener$50693cdd$1(WebDateField.java:114)
at sun.reflect.GeneratedMethodAccessor140.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:200)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:163)
at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1037)
at com.vaadin.ui.AbstractField.fireValueChange(AbstractField.java:1181)
at com.vaadin.ui.DateField.fireValueChange(DateField.java:660)
at com.vaadin.ui.AbstractField.setValue(AbstractField.java:580)
at com.vaadin.ui.AbstractField.setValue(AbstractField.java:474)
at com.vaadin.ui.DateField.setValue(DateField.java:736)
at com.haulmont.cuba.web.toolkit.ui.CubaDateField.setValue(CubaDateField.java:68)
at com.vaadin.ui.DateField.changeVariables(DateField.java:616)
at com.haulmont.cuba.web.toolkit.ui.CubaDateField.changeVariables(CubaDateField.java:76)