All pastes #2073130 Raw Edit

Miscellany

public text v1 · immutable
#2073130 ·published 2011-06-01 07:37 UTC
rendered paste body
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<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;
        }
    }

}