rendered paste bodypackage 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<TaskModel> taskList;
public List<EmployeeModel> go(String type) {
Integer t = Integer.parseInt(type);
PersistenceManager pm = PMF.get().getPersistenceManager();
Query empQuery = pm.newQuery(EmployeeModel.class);
empQuery.setFilter("type == 2");
List<EmployeeModel> empList = (List<EmployeeModel>) empQuery.execute();
taskList = (List<TaskModel>) 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<TaskModel> task = getTaskByEmployee(emp);
Long summ = 0L;
for (TaskModel t : task) {
summ += getAverageTime(emp, t.getTaskType());
}
return summ;
}
private List<TaskModel> getTaskByEmployee(Long emp) {
List<TaskModel> list = new ArrayList<TaskModel>();
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;
}
}
}