package ru.softded.kem; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; import javax.jdo.PersistenceManager; import javax.jdo.Query; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import ru.softded.kem.model.EmployeeModel; import ru.softded.kem.model.TaskModel; public class ProgressTime { List taskList; public List go(String type) { Integer t = Integer.parseInt(type); PersistenceManager pm = PMF.get().getPersistenceManager(); Query empQuery = pm.newQuery(EmployeeModel.class); empQuery.setFilter("type == 2"); List empList = (List) empQuery.execute(); taskList = (List) pm.newQuery(TaskModel.class).execute(); for (EmployeeModel em : empList) { String name = em.getThName(); Long dateLong = getTime(em.getId()); if (dateLong == 0) continue; dateLong += getAverageTime(em.getId(), t); DateTime date = new DateTime(getTime(em.getId()), DateTimeZone.UTC); name += " " + date.getHourOfDay() + ":" + date.getMinuteOfHour(); em.setThName(name); Logger.getLogger("").info(date.toString()); } return empList; } private Long getTime(Long emp) { List task = getTaskByEmployee(emp); Long summ = 0L; for (TaskModel t : task) { summ += getAverageTime(emp, t.getTaskType()); } return summ; } private List getTaskByEmployee(Long emp) { List list = new ArrayList(); for (TaskModel t : taskList) { if (t.getEmployee() == emp) { list.add(t); } } return list; } private Long getAverageTime(Long employee, Integer type) { Long summ = 0L; int i = 0; for (TaskModel t : taskList) { if (t.getEmployee() == employee && t.getTaskType() == type) { if (t.getStartTime().getTime() != 1000000000 && t.getEndTime().getTime() != 1000000000) { i++; summ += t.getEndTime().getTime() - t.getStartTime().getTime(); } } } if (i > 0) { return summ/i; } else { return 0L; } } }