I have a component which display some list and I am using @Factory method. But 
when I call add, from this component, which do not access to the list, the 
@Factory method is called. Why ?


  | package cz.bpsolutions.ims.services.diary;
  | 
  | import java.io.Serializable;
  | import java.util.ArrayList;
  | import java.util.Calendar;
  | import java.util.Date;
  | import java.util.List;
  | import java.util.Locale;
  | 
  | import javax.ejb.Remove;
  | import javax.ejb.Stateful;
  | import javax.persistence.EntityManager;
  | import javax.persistence.PersistenceContext;
  | import javax.persistence.PersistenceContextType;
  | 
  | import org.hibernate.Criteria;
  | import org.hibernate.criterion.Order;
  | import org.hibernate.criterion.Restrictions;
  | import org.hibernate.ejb.EntityManagerImpl;
  | import org.jboss.seam.ScopeType;
  | import org.jboss.seam.annotations.Begin;
  | import org.jboss.seam.annotations.Destroy;
  | import org.jboss.seam.annotations.End;
  | import org.jboss.seam.annotations.Factory;
  | 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.datamodel.DataModel;
  | import org.jboss.seam.annotations.datamodel.DataModelSelection;
  | import org.jboss.seam.annotations.security.Restrict;
  | import org.jboss.seam.log.Log;
  | 
  | import cz.bpsolutions.ims.model.Account;
  | import cz.bpsolutions.ims.model.DiaryEntry;
  | import cz.bpsolutions.ims.model.Request;
  | import cz.bpsolutions.ims.services.other.Configuration;
  | import cz.bpsolutions.tools.BiInfo;
  | 
  | @Name("diaryEntryAction")
  | @Restrict("#{identity.loggedIn}")
  | @Stateful
  | public class DiaryEntryAction implements Serializable, 
DiaryEntryActionLocal {
  |     private static final long serialVersionUID = 6790052898169296206L;
  | 
  |     @Logger
  |     Log log;
  | 
  |     Date date;
  | 
  |     @In(required = false, scope = ScopeType.SESSION)
  |     Account loggedUser;
  | 
  |     @PersistenceContext(type = PersistenceContextType.EXTENDED)
  |     EntityManager em;
  | 
  |     @DataModel
  |     List<DiaryEntry> diaryEntries;
  | 
  |     @In(required = false)
  |     DiaryEntry diaryEntry;
  |     
  |     @DataModelSelection(value = "diaryEntries")
  |     DiaryEntry selectedDiaryEntry;
  | 
  |     @In(required = false)
  |     Request request;
  | 
  | 
  |     @Factory("diaryEntries")
  |     public void load() {
  |             log.info("loading date #0, user #1", getDate(), loggedUser);
  | 
  |             Criteria c = ((EntityManagerImpl) 
(em.getDelegate())).getSession().createCriteria(DiaryEntry.class);
  | 
  |             Date startDay;
  |             Date endDay;
  | 
  |             Calendar cal = Calendar.getInstance(new Locale("cs", "CZ"));
  | 
  |             cal.setTime(getDate());
  | 
  |             cal.set(Calendar.HOUR, 0);
  |             cal.set(Calendar.MINUTE, 0);
  |             cal.set(Calendar.SECOND, 0);
  |             cal.set(Calendar.AM_PM, 0);
  | 
  |             startDay = cal.getTime();
  | 
  |             cal.set(Calendar.HOUR, 23);
  |             cal.set(Calendar.MINUTE, 59);
  |             cal.set(Calendar.SECOND, 59);
  | 
  |             endDay = cal.getTime();
  |             log.info("dates: #0, #1", startDay, endDay);
  | 
  |             c.add(Restrictions.eq("user.id", loggedUser.getId()));
  |             c.add(Restrictions.or(Restrictions.between("dateFrom", 
startDay, endDay), Restrictions.between("dateTo", startDay, endDay)));
  | 
  |             c.addOrder(Order.asc("dateFrom"));
  | 
  |             diaryEntries = c.list();
  |             log.info("loaded #0 of rows.", diaryEntries.size());
  |     }
  | 
  |     /*
  |      * (non-Javadoc)
  |      * 
  |      * @see cz.bpsolutions.ims.services.diary.DiaryEntryActionLocal#save()
  |      */
  | 
  |     public String save() {
  |             log.info("saving the diary entry #0", diaryEntry);
  |             loggedUser = em.find(Account.class, loggedUser.getId());
  | 
  |             // Date time correction
  |             Calendar c = Calendar.getInstance(Configuration.locale);
  |             Calendar c1 = Calendar.getInstance(Configuration.locale);
  | 
  |             c.setTime(diaryEntry.getDateFrom());
  |             c1.setTime(date);
  |             c.set(Calendar.DAY_OF_MONTH, c1.get(Calendar.DAY_OF_MONTH));
  |             c.set(Calendar.MONTH, c1.get(Calendar.MONTH));
  |             c.set(Calendar.YEAR, c1.get(Calendar.YEAR));
  | 
  |             diaryEntry.setDateFrom(c.getTime());
  | 
  |             c.setTime(diaryEntry.getDateTo());
  |             c.set(Calendar.DAY_OF_MONTH, c1.get(Calendar.DAY_OF_MONTH));
  |             c.set(Calendar.MONTH, c1.get(Calendar.MONTH));
  |             c.set(Calendar.YEAR, c1.get(Calendar.YEAR));
  | 
  |             diaryEntry.setDateTo(c.getTime());
  | 
  |             diaryEntry.setUser(loggedUser);
  | 
  |             loggedUser.getDiaryEntries().add(diaryEntry);
  | 
  | 
  |             if (request != null && request.getId() != null) {
  |                     request = em.find(Request.class, request.getId());
  |                     diaryEntry.setRequest(request);
  |                     request.getDiaryEntries().add(diaryEntry);
  |                     em.persist(request);
  |             }
  |             
  |             
  |             em.persist(diaryEntry);
  |             em.persist(loggedUser);
  | 
  |             load();
  | 
  |             diaryEntry = new DiaryEntry();
  |             
  |             return "saved";
  |     }
  | 
  |     @Begin(join = true)
  |     public void reset() {
  |             diaryEntries = null;
  |     }
  | 
  |     public Date getDate() {
  |             if (date == null)
  |                     date = new Date();
  |             return date;
  |     }
  | 
  |     @Begin(join = true)
  |     public void setDate(Date date) {
  |             this.date = date;
  |     }
  | 
  |     @Begin(join = true)
  |     public void changeDate() {
  |             log.info("Changing the date...#0", getDate());
  |             diaryEntries = null;
  |     }
  | 
  |     @Begin(join = true)
  |     public void changeDateToNow() {
  |             log.info("changing to now");
  |             setDate(new Date());
  |             diaryEntries = null;
  |     }
  | 
  |     public Long getWorkedHours() {
  |             Long workedSeconds = 0l;
  | 
  |             if (diaryEntries == null) {
  |                     load();
  |             }
  | 
  |             if (diaryEntries != null) {
  |                     for (DiaryEntry d : diaryEntries) {
  |                             if 
(DiaryType.WORK_DAY.equals(d.getDiaryType())) {
  |                                     workedSeconds += 
d.getDateTo().getTime() - d.getDateFrom().getTime();
  |                             } else if 
(DiaryType.DOCTOR.equals(d.getDiaryType())) {
  |                                     workedSeconds += 
d.getDateTo().getTime() - d.getDateFrom().getTime();
  |                             } else if 
(DiaryType.VACATION.equals(d.getDiaryType())) {
  |                                     workedSeconds += 
d.getDateTo().getTime() - d.getDateFrom().getTime();
  |                             } else if 
(DiaryType.VACATION2.equals(d.getDiaryType())) {
  |                                     workedSeconds += 
d.getDateTo().getTime() - d.getDateFrom().getTime();
  |                             }
  |                     }
  |             }
  | 
  |             log.info("worked seconds: #0", workedSeconds);
  |             return workedSeconds;
  |     }
  | 
  |     public List<BiInfo> getWorkMapInfo() {
  | 
  |             List<BiInfo> ret = new ArrayList<BiInfo>();
  | 
  |             int workDay = Configuration.workDay;
  |             long workedDay = getWorkedHours() / 1000;
  |             double percent = 0l;
  | 
  |             if (diaryEntries != null) {
  |                     Long divider = (workDay > workedDay ? workDay : 
workedDay);
  |                     if (workDay > workedDay) {
  |                             divider += workDay - workedDay;
  |                     }
  |                     for (DiaryEntry d : diaryEntries) {
  |                             BiInfo b = new BiInfo();
  | 
  |                             b.first = d.getDiaryType();
  |                             b.second = 100 * (d.getDateTo().getTime() - 
d.getDateFrom().getTime()) / (1000.0 * divider);
  |                             percent += 100 * (d.getDateTo().getTime() - 
d.getDateFrom().getTime()) / (1000.0 * divider);
  | 
  |                             ret.add(b);
  |                     }
  | 
  |                     if (workDay > workedDay) {
  |                             // neodpracovano
  |                             BiInfo b = new BiInfo();
  | 
  |                             b.first = DiaryType.NOT_CREATED;
  |                             b.second = 100 - percent;
  | 
  |                             ret.add(b);
  |                     }
  |             }
  | 
  |             return ret;
  |     }
  | 
  |     @Destroy
  |     @Remove
  |     public void remove() {
  |     }
  | 
  |     public String delete() {
  |             log.info("removind the diaryentry: #0", selectedDiaryEntry);
  |             em.refresh(selectedDiaryEntry);
  | 
  |             Request r = selectedDiaryEntry.getRequest();
  |             if (r != null) {
  |                     r.getDiaryEntries().remove(selectedDiaryEntry);
  | 
  |                     em.persist(r);
  |             }
  |             em.remove(selectedDiaryEntry);
  | 
  |             diaryEntries = null;
  |             return "deleted";
  |     }
  |     
  |     @End(beforeRedirect=true)
  |     public String done() {
  |             log.info("saved...conversation end");
  |             return "done";
  |     }
  | }
  | 
  | 


  | 21:38:16,359 INFO  [DiaryEntryAction] loading date Thu Jul 19 21:38:16 CEST 
2007, user [EMAIL PROTECTED]
  | 21:38:16,359 INFO  [DiaryEntryAction] dates: Thu Jul 19 00:00:00 CEST 2007, 
Thu Jul 19 23:59:59 CEST 2007
  | 21:38:16,390 INFO  [DiaryEntryAction] loaded 5 of rows.
  | 21:38:16,390 INFO  [DiaryEntryAction] worked seconds: 33420000
  | 21:38:16,390 INFO  [DiaryEntryAction] saving the diary entry [EMAIL 
PROTECTED]
  | 21:38:16,406 INFO  [DiaryEntryAction] loading date Thu Jul 19 21:38:16 CEST 
2007, user [EMAIL PROTECTED]
  | 21:38:16,406 INFO  [DiaryEntryAction] dates: Thu Jul 19 00:00:00 CEST 2007, 
Thu Jul 19 23:59:59 CEST 2007
  | 21:38:16,406 INFO  [DiaryEntryAction] loaded 6 of rows.
  | 21:38:16,468 INFO  [UserService] locating the user mvlach
  | 21:38:16,468 INFO  [UserService] locating the user mvlach
  | 21:38:16,468 INFO  [DiaryEntryAction] worked seconds: 33420000
  | 21:38:16,484 INFO  [DiaryEntryAction] worked seconds: 33420000
  | 


View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4065936#4065936

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4065936
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to