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);
}
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;
}
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();
}
}
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;
}
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;
}
Aggregations