Example usage for org.joda.time Duration ZERO

List of usage examples for org.joda.time Duration ZERO

Introduction

In this page you can find the example usage for org.joda.time Duration ZERO.

Prototype

Duration ZERO

To view the source code for org.joda.time Duration ZERO.

Click Source Link

Document

Constant representing zero millisecond duration

Usage

From source file:pt.ist.fenixedu.teacher.domain.teacher.TeacherService.java

License:Open Source License

public static Duration getLecturedDurationOnExecutionCourse(Teacher teacher, ExecutionCourse executionCourse) {
    Duration duration = Duration.ZERO;
    Professorship professorship = teacher.getProfessorshipByExecutionCourse(executionCourse);
    TeacherService teacherService = getTeacherServiceByExecutionPeriod(teacher,
            executionCourse.getExecutionPeriod());
    if (teacherService != null) {
        List<DegreeTeachingService> teachingServices = teacherService
                .getDegreeTeachingServiceByProfessorship(professorship);
        for (DegreeTeachingService teachingService : teachingServices) {
            duration = duration.plus(new Duration(new Double((teachingService.getPercentage() / 100)
                    * teachingService.getShift().getCourseLoadWeeklyAverage().doubleValue() * 3600 * 1000)
                            .longValue()));
        }/*from   ww  w  .j  a  va2s . co  m*/
    }
    return duration;
}

From source file:pt.ist.fenixedu.teacher.evaluation.ui.struts.action.credits.ViewDepartmentTeacherServiceDA.java

License:Open Source License

public ActionForward exportDepartmentTeacherService(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response) throws FenixServiceException, IOException {
    DepartmentCreditsBean departmentCreditsBean = getRenderedObject();
    List<Department> departments = new ArrayList<Department>();
    if (departmentCreditsBean.getDepartment() != null) {
        departments.add(departmentCreditsBean.getDepartment());
    } else {/*from w  w  w  .j a  v  a  2 s. c om*/
        departments.addAll(departmentCreditsBean.getAvailableDepartments());
    }
    StyledExcelSpreadsheet spreadsheet = new StyledExcelSpreadsheet();
    PeriodFormatter periodFormatter = new PeriodFormatterBuilder().printZeroAlways().minimumPrintedDigits(2)
            .appendHours().appendSuffix(":").appendMinutes().toFormatter();
    for (Department department : departments) {
        spreadsheet.getSheet(department.getAcronym());
        spreadsheet.newHeaderRow();
        spreadsheet.addHeader(
                BundleUtil.getString(Bundle.DEPARTMENT_MEMBER, "label.teacherService.course.name"), 10000);
        spreadsheet.addHeader(
                BundleUtil.getString(Bundle.DEPARTMENT_MEMBER, "label.teacherService.course.degrees"));
        spreadsheet.addHeader(
                BundleUtil.getString(Bundle.DEPARTMENT_MEMBER, "label.teacherService.course.semester"));

        spreadsheet.addHeader(BundleUtil.getString(Bundle.DEPARTMENT_MEMBER,
                "label.teacherService.course.firstTimeEnrolledStudentsNumber"));
        spreadsheet.addHeader(BundleUtil.getString(Bundle.DEPARTMENT_MEMBER,
                "label.teacherService.course.secondTimeEnrolledStudentsNumber"));

        spreadsheet.addHeader(BundleUtil.getString(Bundle.DEPARTMENT_MEMBER,
                "label.teacherService.course.totalStudentsNumber"));

        org.fenixedu.academic.domain.ShiftType[] values = org.fenixedu.academic.domain.ShiftType.values();
        for (ShiftType shiftType : values) {
            spreadsheet.addHeader(
                    BundleUtil.getString(Bundle.DEPARTMENT_MEMBER, "label.teacherServiceDistribution.hours")
                            + " " + shiftType.getFullNameTipoAula());
            //    spreadsheet.addHeader("# Alunos / # Turnos " + shiftType.getFullNameTipoAula());
        }

        spreadsheet.addHeader(
                BundleUtil.getString(Bundle.DEPARTMENT_MEMBER, "label.teacherService.course.totalHours"));
        spreadsheet.addHeader(
                BundleUtil.getString(Bundle.DEPARTMENT_MEMBER, "label.teacherService.course.availability"));

        for (ExecutionSemester executionSemester : departmentCreditsBean.getExecutionYear()
                .getExecutionPeriodsSet()) {
            for (ExecutionCourse executionCourse : departmentCreditsBean.getDepartment().getDepartmentUnit()
                    .getAllExecutionCoursesByExecutionPeriod(executionSemester)) {

                spreadsheet.newRow();
                spreadsheet.addCell(executionCourse.getNome());
                spreadsheet.addCell(getDegreeSiglas(executionCourse));
                spreadsheet.addCell(executionCourse.getExecutionPeriod().getSemester());

                int executionCourseFirstTimeEnrollementStudentNumber = executionCourse
                        .getFirstTimeEnrolmentStudentNumber();
                int totalStudentsNumber = executionCourse.getTotalEnrolmentStudentNumber();
                int executionCourseSecondTimeEnrollementStudentNumber = totalStudentsNumber
                        - executionCourseFirstTimeEnrollementStudentNumber;
                spreadsheet.addCell(executionCourseFirstTimeEnrollementStudentNumber);
                spreadsheet.addCell(executionCourseSecondTimeEnrollementStudentNumber);
                spreadsheet.addCell(totalStudentsNumber);

                Double totalHours = 0.0;
                for (ShiftType shiftType : values) {
                    Double shiftHours = executionCourse.getAllShiftUnitHours(shiftType).doubleValue();
                    totalHours += shiftHours;
                    spreadsheet.addCell(shiftHours);
                }

                Duration totalShiftsDuration = new Duration(
                        new Double(executionCourse.getAssociatedShifts().stream()
                                .mapToDouble(s -> s.getCourseLoadWeeklyAverage().doubleValue()).sum() * 3600000)
                                        .longValue());
                spreadsheet.addCell(periodFormatter.print(totalShiftsDuration.toPeriod()));
                int colNum = spreadsheet.getNextWritableCell();
                spreadsheet.addCell("");

                Duration totalLecturedDuration = Duration.ZERO;
                for (Professorship professorship : executionCourse.getProfessorshipsSet()) {
                    Teacher teacher = professorship.getTeacher();
                    if (teacher != null) {
                        Duration teacherLecturedTime = TeacherService
                                .getLecturedDurationOnExecutionCourse(teacher, executionCourse);
                        totalLecturedDuration = totalLecturedDuration.plus(teacherLecturedTime);
                        spreadsheet.addCell(teacher.getPerson().getUsername());
                        spreadsheet.addCell(teacher.getPerson().getName());
                        spreadsheet.addCell(periodFormatter.print(teacherLecturedTime.toPeriod()));
                    }

                }

                spreadsheet.addCell(
                        periodFormatter.print(totalShiftsDuration.minus(totalLecturedDuration).toPeriod()),
                        colNum);
            }
        }
        spreadsheet.getSheet(department.getAcronym() + "_docentes");
        spreadsheet.newHeaderRow();
        spreadsheet
                .addHeader(BundleUtil.getString("resources.TeacherCreditsSheetResources", "label.teacher.id"));
        spreadsheet.addHeader(
                BundleUtil.getString("resources.TeacherCreditsSheetResources", "label.teacher.name"), 10000);
        spreadsheet.addHeader(BundleUtil.getString("resources.TeacherCreditsSheetResources", "label.category"));
        spreadsheet.addHeader(BundleUtil.getString("resources.TeacherCreditsSheetResources", "label.course"),
                10000);
        spreadsheet.addHeader(BundleUtil.getString("resources.TeacherCreditsSheetResources", "label.degrees"));
        spreadsheet.addHeader(
                BundleUtil.getString("resources.TeacherCreditsSheetResources", "label.execution-period"));
        spreadsheet.addHeader(BundleUtil.getString("resources.TeacherCreditsSheetResources", "label.hours"));

        Set<Teacher> allTeachers = Sets
                .newHashSet(department.getAllTeachers(departmentCreditsBean.getExecutionYear()));
        for (Teacher teacher : allTeachers) {
            spreadsheet.newRow();
            spreadsheet.addCell(teacher.getPerson().getUsername());
            spreadsheet.addCell(teacher.getPerson().getProfile().getDisplayName());
            TeacherAuthorization teacherAuthorization = teacher
                    .getTeacherAuthorization(departmentCreditsBean.getExecutionYear().getAcademicInterval())
                    .orElse(null);
            if (teacherAuthorization != null) {
                spreadsheet.addCell(teacherAuthorization.getTeacherCategory().getName().getContent());
            }
            for (Professorship professorship : teacher
                    .getProfessorships(departmentCreditsBean.getExecutionYear())) {
                spreadsheet.newRow();
                spreadsheet.addCell(professorship.getExecutionCourse().getNome(), 3);
                spreadsheet.addCell(getDegreeSiglas(professorship.getExecutionCourse()));
                spreadsheet.addCell(professorship.getExecutionCourse().getExecutionPeriod().getSemester());
                Duration teacherLecturedTime = TeacherService.getLecturedDurationOnExecutionCourse(
                        professorship.getTeacher(), professorship.getExecutionCourse());
                spreadsheet.addCell(periodFormatter.print(teacherLecturedTime.toPeriod()));
            }
        }
    }

    response.setContentType("text/plain");
    StringBuilder filename = new StringBuilder("servicoDocencia");
    filename.append((departments.size() == 1 ? departments.iterator().next().getAcronym() : "Departamentos"));
    filename.append("_")
            .append(departmentCreditsBean.getExecutionYear().getQualifiedName().replaceAll("/", "_"))
            .append(".xls");
    response.setHeader("Content-disposition", "attachment; filename=" + filename.toString());
    final ServletOutputStream writer = response.getOutputStream();
    spreadsheet.getWorkbook().write(writer);
    writer.flush();
    response.flushBuffer();
    return null;
}

From source file:pt.ist.fenixedu.teacher.ui.struts.action.credits.ViewDepartmentTeacherServiceDA.java

License:Open Source License

public ActionForward exportDepartmentTeacherService(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response) throws FenixServiceException, IOException {
    DepartmentCreditsBean departmentCreditsBean = getRenderedObject();
    List<Department> departments = new ArrayList<Department>();
    if (departmentCreditsBean.getDepartment() != null) {
        departments.add(departmentCreditsBean.getDepartment());
    } else {//from   w  w  w  . j  a va2s .  com
        departments.addAll(departmentCreditsBean.getAvailableDepartments());
    }
    StyledExcelSpreadsheet spreadsheet = new StyledExcelSpreadsheet();
    PeriodFormatter periodFormatter = new PeriodFormatterBuilder().printZeroAlways().minimumPrintedDigits(2)
            .appendHours().appendSuffix(":").appendMinutes().toFormatter();
    for (Department department : departments) {
        spreadsheet.getSheet(department.getAcronym());
        spreadsheet.newHeaderRow();
        spreadsheet.addHeader(
                BundleUtil.getString(Bundle.DEPARTMENT_MEMBER, "label.teacherService.course.name"), 10000);
        spreadsheet.addHeader(
                BundleUtil.getString(Bundle.DEPARTMENT_MEMBER, "label.teacherService.course.degrees"));
        spreadsheet.addHeader(
                BundleUtil.getString(Bundle.DEPARTMENT_MEMBER, "label.teacherService.course.semester"));

        spreadsheet.addHeader(BundleUtil.getString(Bundle.DEPARTMENT_MEMBER,
                "label.teacherService.course.firstTimeEnrolledStudentsNumber"));
        spreadsheet.addHeader(BundleUtil.getString(Bundle.DEPARTMENT_MEMBER,
                "label.teacherService.course.secondTimeEnrolledStudentsNumber"));

        spreadsheet.addHeader(BundleUtil.getString(Bundle.DEPARTMENT_MEMBER,
                "label.teacherService.course.totalStudentsNumber"));

        org.fenixedu.academic.domain.ShiftType[] values = org.fenixedu.academic.domain.ShiftType.values();
        for (ShiftType shiftType : values) {
            spreadsheet.addHeader(
                    BundleUtil.getString(Bundle.DEPARTMENT_MEMBER, "label.teacherServiceDistribution.hours")
                            + " " + shiftType.getFullNameTipoAula());
            //    spreadsheet.addHeader("# Alunos / # Turnos " + shiftType.getFullNameTipoAula());
        }

        spreadsheet.addHeader(
                BundleUtil.getString(Bundle.DEPARTMENT_MEMBER, "label.teacherService.course.totalHours"));
        spreadsheet.addHeader(
                BundleUtil.getString(Bundle.DEPARTMENT_MEMBER, "label.teacherService.course.availability"));

        for (ExecutionSemester executionSemester : departmentCreditsBean.getExecutionYear()
                .getExecutionPeriodsSet()) {
            for (ExecutionCourse executionCourse : departmentCreditsBean.getDepartment().getDepartmentUnit()
                    .getAllExecutionCoursesByExecutionPeriod(executionSemester)) {

                spreadsheet.newRow();
                spreadsheet.addCell(executionCourse.getNome());
                spreadsheet.addCell(getDegreeSiglas(executionCourse));
                spreadsheet.addCell(executionCourse.getExecutionPeriod().getSemester());

                int executionCourseFirstTimeEnrollementStudentNumber = executionCourse
                        .getFirstTimeEnrolmentStudentNumber();
                int totalStudentsNumber = executionCourse.getTotalEnrolmentStudentNumber();
                int executionCourseSecondTimeEnrollementStudentNumber = totalStudentsNumber
                        - executionCourseFirstTimeEnrollementStudentNumber;
                spreadsheet.addCell(executionCourseFirstTimeEnrollementStudentNumber);
                spreadsheet.addCell(executionCourseSecondTimeEnrollementStudentNumber);
                spreadsheet.addCell(totalStudentsNumber);

                Double totalHours = 0.0;
                for (ShiftType shiftType : values) {
                    Double shiftHours = executionCourse.getAllShiftUnitHours(shiftType).doubleValue();
                    totalHours += shiftHours;
                    spreadsheet.addCell(shiftHours);

                    //                        Integer numberOfShifts = executionCourse.getNumberOfShifts(shiftType);
                    //                        spreadsheet.addCell(numberOfShifts == 0 ? 0 : (double) totalStudentsNumber / numberOfShifts);

                }

                Duration totalShiftsDuration = executionCourse.getTotalShiftsDuration();
                spreadsheet.addCell(periodFormatter.print(totalShiftsDuration.toPeriod()));
                int colNum = spreadsheet.getNextWritableCell();
                spreadsheet.addCell("");

                Duration totalLecturedDuration = Duration.ZERO;
                for (Professorship professorship : executionCourse.getProfessorshipsSet()) {
                    Teacher teacher = professorship.getTeacher();
                    if (teacher != null) {
                        Duration teacherLecturedTime = TeacherService
                                .getLecturedDurationOnExecutionCourse(teacher, executionCourse);
                        totalLecturedDuration = totalLecturedDuration.plus(teacherLecturedTime);
                        spreadsheet.addCell(teacher.getPerson().getUsername());
                        spreadsheet.addCell(teacher.getPerson().getName());
                        spreadsheet.addCell(periodFormatter.print(teacherLecturedTime.toPeriod()));
                    }

                }

                spreadsheet.addCell(
                        periodFormatter.print(totalShiftsDuration.minus(totalLecturedDuration).toPeriod()),
                        colNum);
            }
        }
        spreadsheet.getSheet(department.getAcronym() + "_docentes");
        spreadsheet.newHeaderRow();
        spreadsheet.addHeader(BundleUtil.getString(Bundle.TEACHER_CREDITS, "label.teacher.id"));
        spreadsheet.addHeader(BundleUtil.getString(Bundle.TEACHER_CREDITS, "label.teacher.name"), 10000);
        spreadsheet.addHeader(BundleUtil.getString(Bundle.TEACHER_CREDITS, "label.category"));
        spreadsheet.addHeader(BundleUtil.getString(Bundle.TEACHER_CREDITS, "label.course"), 10000);
        spreadsheet.addHeader(BundleUtil.getString(Bundle.TEACHER_CREDITS, "label.degrees"));
        spreadsheet.addHeader(BundleUtil.getString(Bundle.TEACHER_CREDITS, "label.execution-period"));
        spreadsheet.addHeader(BundleUtil.getString(Bundle.TEACHER_CREDITS, "label.hours"));

        Set<Teacher> allTeachers = Sets
                .newHashSet(department.getAllTeachers(departmentCreditsBean.getExecutionYear()));
        for (Teacher teacher : allTeachers) {
            spreadsheet.newRow();
            spreadsheet.addCell(teacher.getPerson().getUsername());
            spreadsheet.addCell(teacher.getPerson().getProfile().getDisplayName());
            TeacherAuthorization teacherAuthorization = teacher
                    .getTeacherAuthorization(departmentCreditsBean.getExecutionYear().getAcademicInterval())
                    .orElse(null);
            if (teacherAuthorization != null) {
                spreadsheet.addCell(teacherAuthorization.getTeacherCategory().getName().getContent());
            }
            for (Professorship professorship : teacher
                    .getProfessorships(departmentCreditsBean.getExecutionYear())) {
                spreadsheet.newRow();
                spreadsheet.addCell(professorship.getExecutionCourse().getNome(), 3);
                spreadsheet.addCell(getDegreeSiglas(professorship.getExecutionCourse()));
                spreadsheet.addCell(professorship.getExecutionCourse().getExecutionPeriod().getSemester());
                Duration teacherLecturedTime = TeacherService.getLecturedDurationOnExecutionCourse(
                        professorship.getTeacher(), professorship.getExecutionCourse());
                spreadsheet.addCell(periodFormatter.print(teacherLecturedTime.toPeriod()));
            }
        }
    }

    response.setContentType("text/plain");
    StringBuilder filename = new StringBuilder("servicoDocencia");
    filename.append((departments.size() == 1 ? departments.iterator().next().getAcronym() : "Departamentos"));
    filename.append("_")
            .append(departmentCreditsBean.getExecutionYear().getQualifiedName().replaceAll("/", "_"))
            .append(".xls");
    response.setHeader("Content-disposition", "attachment; filename=" + filename.toString());
    final ServletOutputStream writer = response.getOutputStream();
    spreadsheet.getWorkbook().write(writer);
    writer.flush();
    response.flushBuffer();
    return null;
}

From source file:rcrr.reversi.Clock.java

License:Open Source License

/**
 * Class static factory that returns a new clock object with the given initial value
 * assigned equally to both players.//from w  w  w  . j  a va 2 s  .c  o m
 * <p>
 * Parameter {@code initialDuration} must be not {@code null}, and must be not negative.
 *
 * @param  initialDuration the game's duration assigned to the two players
 * @return                 a new clock having black's and white's time duration
 *                         set to the same given value
 * @throws NullPointerException     if parameter {@code initialDuration} is {@code null}
 * @throws IllegalArgumentException if parameter {@code initialDuration} is shorter than a zero duration
 */
public static Clock initialClock(final Duration initialDuration) {
    if (initialDuration == null) {
        throw new NullPointerException("Parameter initialDuration cannot be null.");
    }
    if (initialDuration.isShorterThan(Duration.ZERO)) {
        throw new IllegalArgumentException("Parameter initialDuration cannot be negative.");
    }
    return valueOf(transientDurations(initialDuration, initialDuration));
}

From source file:rcrr.reversi.Clock.java

License:Open Source License

/**
 * Class static factory that returns a new clock object constructed using the given map.
 * <p>//from   w  w  w  .  j  av a 2 s .  co m
 * Parameter {@code durations} must satisfy the following conditions:
 * <ul>
 *   <li>Must be not {@code null}</li>
 *   <li>Must have a number of entries equal to the players' count</li>
 *   <li>Must not have {@code null} keys</li>
 *   <li>Must not have {@code null} values</li>
 *   <li>Must not have negative duration values</li>
 * </ul>
 *
 * @param durations the game's time assigned to the players
 * @return          a new clock having black's and white's time set to the
 *                  given durations
 * @throws NullPointerException     when parameter {@code durations} is {@code null},
 *                                  or it has a {@code null} key,
 *                                  or it has a {@code null} value
 * @throws IllegalArgumentException when parameter {@code durations} size is different from the number
 *                                  of players, or duration values are negative
 */
public static Clock valueOf(final Map<Player, Duration> durations) {
    if (durations == null) {
        throw new NullPointerException("Parameter durations cannot be null.");
    }
    if (durations.size() != Player.values().length) {
        throw new IllegalArgumentException("Parameter durations size is not consistent." + " durations.size()="
                + durations.size() + " expected value: " + Player.values().length);
    }
    if (durations.containsKey(null)) {
        throw new NullPointerException("Parameter durations cannot have null keys.");
    }
    if (durations.containsValue(null)) {
        throw new NullPointerException("Parameter durations cannot have null values.");
    }
    for (Duration duration : durations.values()) {
        if (duration.isShorterThan(Duration.ZERO)) {
            throw new IllegalArgumentException(
                    "Parameter durations cannot have negative values." + " durations=" + durations);
        }
    }
    return new Clock(durations);
}

From source file:rcrr.reversi.Clock.java

License:Open Source License

/**
 * Returns a new clock object generated subtracting the delta value from
 * the specified player remaining clock time.
 * <p>//from   w  ww  .  ja  v a 2 s.  c om
 * When the delta parameter is greather than the player's actual time
 * the updated value is set to zero.
 * <p>
 * Parameter {@code player} must be not {@code null}.
 * Parameter {@code delta} must be not {@code null}, and must be not negative.
 *
 * @param  player the player from which to take away the specified time
 * @param  delta  the amount of time in milliseconds to subtract from the
 *                player's clock time
 * @return        a new updated clock
 * @throws NullPointerException     if the player or delta parameter is null
 * @throws IllegalArgumentException if the delta parameter is negative.
 */
public Clock decrement(final Player player, final Duration delta) {
    if (player == null) {
        throw new NullPointerException("Parameter player connot be null");
    }
    if (delta == null) {
        throw new NullPointerException("Parameter delta connot be null.");
    }
    if (delta.isShorterThan(Duration.ZERO)) {
        throw new IllegalArgumentException("Parameter delta cannot be negative.");
    }
    final Duration actual = this.durations.get(player);
    final Duration updated = (actual.isLongerThan(delta)) ? actual.minus(delta) : Duration.ZERO;
    return valueOf(set(player, updated));
}

From source file:rcrr.reversi.Game.java

License:Open Source License

/**
 * The method implements the {@code move()} method, passind as parameter
 * the move register so far collected./*w ww  . j av a 2  s.  c  o m*/
 * <p>
 * The clock is not handled correctly when the player send an
 * illegal move.
 *
 * @param previousRegister the move register taken from the previous attempt
 *                         or an empty one.
 * @return                 the move
 */
private Move move(final MoveRegister previousRegister) {
    assert (previousRegister != null) : "Parameter previousRegister cannot be null.";

    final long t0 = System.currentTimeMillis();
    Move move = actors.get(player()).strategy().move(sequence.last());
    final long t1 = System.currentTimeMillis();
    final Clock updatedClock = actualClock(previousRegister).decrement(player(), new Duration(t0, t1));
    MoveRegister register = previousRegister.push(MoveRecord.valueOfAtCurrentTime(move, updatedClock));
    if (updatedClock.get(player()).isEqual(Duration.ZERO)) {
        move = Move.valueOf(Move.Action.RESIGN);
        register = register.push(MoveRecord.valueOfAtCurrentTime(move, updatedClock));
        ps.print("\n" + player().name() + " RESIGN. Time is ended. " + "\n");
        sequence = sequence.add(next(move, updatedClock, register));
        return move;
    }

    if (validateMove(move)) {
        ps.print("\n" + player().name() + " moves to " + move + "\n");
        sequence = sequence.add(next(move, updatedClock, register));
    } else {
        ps.print("Illegal move: " + move + "\n");
        if (register.size() < MAX_ALLOWED_NUMBER_OF_ILLEGAL_MOVES) {
            move = move(register);
        } else {
            move = Move.valueOf(Move.Action.RESIGN);
            register = register.push(MoveRecord.valueOfAtCurrentTime(move, updatedClock));
            ps.print("\n" + player().name() + " RESIGN. Too many illegal moves. " + "\n");
            sequence = sequence.add(next(move, updatedClock, register));
        }
    }
    return move;
}

From source file:utils.jaxrs.container.circuitbreaker.OverloadBasedHealthPolicy.java

License:Apache License

@Override
public boolean isHealthy(String scope) {

    // [1] all servlet container threads taken?
    Threadpool pool = environment.getThreadpoolUsage();
    if (pool.getCurrentThreadsBusy() >= pool.getMaxThreads()) {
        TransactionMetrics metrics = metricsRegistry.transactions(scope);

        // [2] more than 80% currently consumed by this operation?
        if (metrics.running().size() > (pool.getMaxThreads() * 0.8)) {

            // [3] is 50percentile higher than slow threshold?
            Duration current50percentile = metrics.ofLast(new Duration(3000)).percentile(50);
            if (thresholdSlowTransaction.minus(current50percentile).compareTo(Duration.ZERO) < 0) {
                return false;
            }//  ww w .  j a  va 2s . c  o  m
        }
    }

    return true;
}