Search in sources :

Example 6 with Schedule

use of org.opennms.netmgt.config.groups.Schedule 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 Schedule

use of org.opennms.netmgt.config.groups.Schedule 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 Schedule

use of org.opennms.netmgt.config.groups.Schedule in project opennms by OpenNMS.

the class GroupManager method renameUser.

/**
 * When this method is called group name is changed, so also is the
 * group name belonging to the view. Also overwrites the "groups.xml" file
 *
 * @param oldName a {@link java.lang.String} object.
 * @param newName a {@link java.lang.String} object.
 * @throws java.lang.Exception if any.
 */
public synchronized void renameUser(String oldName, String newName) throws Exception {
    // Get the old data
    if (oldName == null || newName == null || oldName == "" || newName == "") {
        throw new Exception("Group Factory: Rename user.. no value ");
    } else {
        Map<String, Group> map = new LinkedHashMap<String, Group>();
        for (Group group : m_groups.values()) {
            for (ListIterator<String> userList = group.getUsers().listIterator(); userList.hasNext(); ) {
                String name = userList.next();
                if (name.equals(oldName)) {
                    userList.set(newName);
                }
            }
            map.put(group.getName(), group);
        }
        m_groups.clear();
        m_groups.putAll(map);
        for (Role role : m_roles.values()) {
            for (Schedule sched : role.getSchedules()) {
                if (oldName.equals(sched.getName())) {
                    sched.setName(newName);
                }
            }
        }
        saveGroups();
    }
}
Also used : Role(org.opennms.netmgt.config.groups.Role) Group(org.opennms.netmgt.config.groups.Group) OnmsGroup(org.opennms.netmgt.model.OnmsGroup) DutySchedule(org.opennms.netmgt.config.users.DutySchedule) Schedule(org.opennms.netmgt.config.groups.Schedule) IOException(java.io.IOException) LinkedHashMap(java.util.LinkedHashMap)

Example 9 with Schedule

use of org.opennms.netmgt.config.groups.Schedule in project opennms by OpenNMS.

the class GroupManager method isUserScheduledForRole.

/**
 * <p>isUserScheduledForRole</p>
 *
 * @param userId a {@link java.lang.String} object.
 * @param roleId a {@link java.lang.String} object.
 * @param time a {@link java.util.Date} object.
 * @return a boolean.
 * @throws java.io.IOException if any.
 */
public boolean isUserScheduledForRole(String userId, String roleId, Date time) throws IOException {
    update();
    for (Schedule sched : getUserSchedulesForRole(userId, roleId)) {
        if (BasicScheduleUtils.isTimeInSchedule(time, BasicScheduleUtils.getGroupSchedule(sched))) {
            return true;
        }
    }
    // if no user is scheduled then the supervisor is schedule by default
    Role role = getRole(roleId);
    if (userId.equals(role.getSupervisor())) {
        for (Schedule sched : role.getSchedules()) {
            if (BasicScheduleUtils.isTimeInSchedule(time, BasicScheduleUtils.getGroupSchedule(sched))) {
                // we found another scheduled user
                return false;
            }
        }
        return true;
    }
    return false;
}
Also used : Role(org.opennms.netmgt.config.groups.Role) DutySchedule(org.opennms.netmgt.config.users.DutySchedule) Schedule(org.opennms.netmgt.config.groups.Schedule)

Example 10 with Schedule

use of org.opennms.netmgt.config.groups.Schedule in project opennms by OpenNMS.

the class GroupManager method getUserSchedulesForRole.

/**
 * <p>getUserSchedulesForRole</p>
 *
 * @param userId a {@link java.lang.String} object.
 * @param roleId a {@link java.lang.String} object.
 * @return a {@link java.util.List} object.
 * @throws java.io.IOException if any.
 */
public List<Schedule> getUserSchedulesForRole(String userId, String roleId) throws IOException {
    update();
    List<Schedule> scheds = new ArrayList<Schedule>();
    for (Schedule sched : getRole(roleId).getSchedules()) {
        if (userId.equals(sched.getName())) {
            scheds.add(sched);
        }
    }
    return scheds;
}
Also used : DutySchedule(org.opennms.netmgt.config.users.DutySchedule) Schedule(org.opennms.netmgt.config.groups.Schedule) ArrayList(java.util.ArrayList)

Aggregations

Schedule (org.opennms.netmgt.config.groups.Schedule)17 Owner (org.opennms.core.utils.Owner)11 Test (org.junit.Test)10 OwnedIntervalSequence (org.opennms.core.utils.OwnedIntervalSequence)8 OwnedInterval (org.opennms.core.utils.OwnedInterval)5 DutySchedule (org.opennms.netmgt.config.users.DutySchedule)5 ArrayList (java.util.ArrayList)3 TimeInterval (org.opennms.core.utils.TimeInterval)3 Role (org.opennms.netmgt.config.groups.Role)3 Time (org.opennms.netmgt.config.groups.Time)3 IOException (java.io.IOException)1 Date (java.util.Date)1 LinkedHashMap (java.util.LinkedHashMap)1 Group (org.opennms.netmgt.config.groups.Group)1 OnmsGroup (org.opennms.netmgt.model.OnmsGroup)1