Search in sources :

Example 6 with OwnedIntervalSequence

use of org.opennms.core.utils.OwnedIntervalSequence in project opennms by OpenNMS.

the class BasicScheduleUtilsTest method testGetIntervalsMonthly.

@Test
public void testGetIntervalsMonthly() throws Exception {
    String schedSpec = "           <schedule name=\"simple\" type=\"monthly\">" + "               <time day=\"7\" begins=\"11:00:00\" ends=\"14:00:00\"/>\n" + "           </schedule>";
    Schedule simpleSchedule = JaxbUtils.unmarshal(Schedule.class, schedSpec);
    BasicSchedule basicSchedule = BasicScheduleUtils.getGroupSchedule(simpleSchedule);
    Owner owner = new Owner("unnamed", "simple", 0, 0);
    OwnedIntervalSequence intervals = BasicScheduleUtils.getIntervals(interval(6, /* june */
    7, 13, 11, /* nov */
    7, 12), basicSchedule.getTime(0), owner);
    assertNotNull(intervals);
    OwnedInterval[] expected = { owned(owner, jun(7, 13, 14)), owned(owner, jul(7, 11, 14)), owned(owner, aug(7, 11, 14)), owned(owner, sep(7, 11, 14)), owned(owner, oct(7, 11, 14)), owned(owner, nov(7, 11, 12)) };
    assertTimeIntervalSequence(expected, intervals);
}
Also used : Owner(org.opennms.core.utils.Owner) Schedule(org.opennms.netmgt.config.groups.Schedule) OwnedIntervalSequence(org.opennms.core.utils.OwnedIntervalSequence) OwnedInterval(org.opennms.core.utils.OwnedInterval) Test(org.junit.Test)

Example 7 with OwnedIntervalSequence

use of org.opennms.core.utils.OwnedIntervalSequence in project opennms by OpenNMS.

the class GroupManager method getRoleScheduleEntries.

/**
     * <p>getRoleScheduleEntries</p>
     *
     * @param roleid a {@link java.lang.String} object.
     * @param start a {@link java.util.Date} object.
     * @param end a {@link java.util.Date} object.
     * @return a {@link org.opennms.core.utils.OwnedIntervalSequence} object.
     * @throws java.io.IOException if any.
     */
public OwnedIntervalSequence getRoleScheduleEntries(String roleid, Date start, Date end) throws IOException {
    update();
    OwnedIntervalSequence schedEntries = new OwnedIntervalSequence();
    Role role = getRole(roleid);
    for (int i = 0; i < role.getSchedules().size(); i++) {
        final int index = i;
        Schedule sched = (Schedule) role.getSchedules().get(index);
        Owner owner = new Owner(roleid, sched.getName(), i);
        schedEntries.addAll(BasicScheduleUtils.getIntervalsCovering(start, end, BasicScheduleUtils.getGroupSchedule(sched), owner));
    }
    OwnedIntervalSequence defaultEntries = new OwnedIntervalSequence(new OwnedInterval(start, end));
    defaultEntries.removeAll(schedEntries);
    Owner supervisor = new Owner(roleid, role.getSupervisor());
    for (Iterator<OwnedInterval> it = defaultEntries.iterator(); it.hasNext(); ) {
        OwnedInterval interval = it.next();
        interval.addOwner(supervisor);
    }
    schedEntries.addAll(defaultEntries);
    return schedEntries;
}
Also used : Role(org.opennms.netmgt.config.groups.Role) Owner(org.opennms.core.utils.Owner) DutySchedule(org.opennms.netmgt.config.users.DutySchedule) Schedule(org.opennms.netmgt.config.groups.Schedule) OwnedIntervalSequence(org.opennms.core.utils.OwnedIntervalSequence) OwnedInterval(org.opennms.core.utils.OwnedInterval)

Example 8 with OwnedIntervalSequence

use of org.opennms.core.utils.OwnedIntervalSequence in project opennms by OpenNMS.

the class Day method getEntries.

/**
     * <p>getEntries</p>
     *
     * @return an array of {@link org.opennms.web.admin.roles.CalendarEntry} objects.
     */
public CalendarEntry[] getEntries() {
    try {
        List<CalendarEntry> entries = new ArrayList<CalendarEntry>();
        OwnedIntervalSequence schedEntries = m_groupManager.getRoleScheduleEntries(m_role.getName(), getTime(0, 0), getTime(24, 0));
        for (Iterator<OwnedInterval> it = schedEntries.iterator(); it.hasNext(); ) {
            OwnedInterval schedEntry = it.next();
            CalendarEntry entry = new CalendarEntry(schedEntry.getStart(), schedEntry.getEnd(), ownerString(schedEntry.getOwners()), schedEntry.getOwners());
            entries.add(entry);
        }
        return entries.toArray(new CalendarEntry[entries.size()]);
    } catch (Throwable e) {
        throw new WebRolesException("Unable to get schedule entries: " + e.getMessage(), e);
    }
}
Also used : ArrayList(java.util.ArrayList) OwnedIntervalSequence(org.opennms.core.utils.OwnedIntervalSequence) OwnedInterval(org.opennms.core.utils.OwnedInterval)

Example 9 with OwnedIntervalSequence

use of org.opennms.core.utils.OwnedIntervalSequence in project opennms by OpenNMS.

the class BasicScheduleUtils method getIntervalsCovering.

/**
     * <p>getIntervalsCovering</p>
     *
     * @param start a {@link java.util.Date} object.
     * @param end a {@link java.util.Date} object.
     * @param sched a {@link org.opennms.netmgt.config.poller.outages.common.BasicSchedule} object.
     * @param owner a {@link org.opennms.core.utils.Owner} object.
     * @return a {@link org.opennms.core.utils.OwnedIntervalSequence} object.
     */
public static OwnedIntervalSequence getIntervalsCovering(final Date start, final Date end, final BasicSchedule sched, final Owner owner) {
    final OwnedIntervalSequence seq = new OwnedIntervalSequence();
    for (int i = 0; i < sched.getTimeCount(); i++) {
        final Time time = sched.getTime(i);
        final Owner thisOwner = owner.addTimeIndex(i);
        seq.addAll(getIntervals(start, end, time, thisOwner));
    }
    return seq;
}
Also used : Owner(org.opennms.core.utils.Owner) OwnedIntervalSequence(org.opennms.core.utils.OwnedIntervalSequence)

Example 10 with OwnedIntervalSequence

use of org.opennms.core.utils.OwnedIntervalSequence in project opennms by OpenNMS.

the class RolesTest method testTimeIntervals.

@Test
public void testTimeIntervals() throws Exception {
    OwnedIntervalSequence intervals = m_groupManager.getRoleScheduleEntries("oncall", getDate("2005-08-18"), getDate("2005-08-19"));
    assertNotNull(intervals);
    Owner brozow = new Owner("oncall", "brozow", 1, 1);
    Owner admin = new Owner("oncall", "admin", 1, 1);
    Owner david = new Owner("oncall", "david", 1, 1);
    OwnedIntervalSequence before = new OwnedIntervalSequence();
    before.addInterval(owned(david, aug(18, 0, 9)));
    before.addInterval(owned(admin, aug(18, 9, 17)));
    before.addInterval(owned(david, aug(18, 17, 23)));
    before.addInterval(owned(brozow, aug(18, 23, 24)));
    OwnedInterval[] expected = { owned(david, aug(18, 0, 9)), owned(admin, aug(18, 9, 17)), owned(david, aug(18, 17, 23)), // brozow is the supervisor and this period is unscheduled
    owned(brozow, aug(18, 23, 24)) };
    assertTimeIntervalSequence(expected, intervals);
}
Also used : Owner(org.opennms.core.utils.Owner) OwnedIntervalSequence(org.opennms.core.utils.OwnedIntervalSequence) OwnedInterval(org.opennms.core.utils.OwnedInterval) Test(org.junit.Test)

Aggregations

OwnedIntervalSequence (org.opennms.core.utils.OwnedIntervalSequence)17 Test (org.junit.Test)13 OwnedInterval (org.opennms.core.utils.OwnedInterval)12 Owner (org.opennms.core.utils.Owner)10 Schedule (org.opennms.netmgt.config.groups.Schedule)8 ArrayList (java.util.ArrayList)2 Date (java.util.Date)1 Role (org.opennms.netmgt.config.groups.Role)1 Time (org.opennms.netmgt.config.groups.Time)1 DutySchedule (org.opennms.netmgt.config.users.DutySchedule)1