HumanResourceManager.java
| Index Score | ||
|---|---|---|
![]() |
![]() |
net.sourceforge.ganttproject.resource |
![]() |
![]() |
GanttProject |
View: Reasons, Metrics, Source Code
These are the metrics that contribute to the Enerjy Score for this file, ranked by impact. So the metrics listed at the top influence the score to a greater extent that the metrics listed at the bottom.
/*
* HumanResourceManager.java
*
* Created on 27. Mai 2003, 22:13
*/
package net.sourceforge.ganttproject.resource;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.EventListener;
import java.util.EventObject;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.sourceforge.ganttproject.Mediator;
import net.sourceforge.ganttproject.calendar.GanttDaysOff;
import net.sourceforge.ganttproject.roles.Role;
import net.sourceforge.ganttproject.undo.GPUndoManager;
/**
* @author barmeier
*/
public class HumanResourceManager implements ResourceManager {
private List myViews = new ArrayList();
private List resources = new ArrayList();
private int nextFreeId = 0;
private final Role myDefaultRole;
/* customFields maintains a list of custom field names
* and their default values */
private Hashtable customFields = null;
private final List myListeners = new ArrayList();
public HumanResourceManager(Role defaultRole) {
myDefaultRole = defaultRole;
customFields = new Hashtable();
}
public HumanResource newHumanResource() {
HumanResource result = new HumanResource(this);
result.setRole(myDefaultRole);
return result;
}
public ProjectResource create(String name, int i) {
HumanResource hr = new HumanResource(name, i, this);
hr.setRole(myDefaultRole);
add(hr);
return (hr);
}
public void add(ProjectResource resource) {
if (resource.getId() == -1) {
resource.setId(nextFreeId);
}
if (resource.getId() >= nextFreeId) {
nextFreeId = resource.getId() + 1;
}
resources.add(resource);
fireResourceAdded(resource);
}
public void addCustomField(String title, Object defVal) {
customFields.put(title, defVal);
/* all the existant resources are added the new property field */
Iterator it = resources.iterator();
while (it.hasNext()) {
((HumanResource)it.next()).addCustomField(title, defVal);
}
}
public boolean checkCustomField(String title){
return customFields.containsKey(title);
}
public Class getCustomFieldType(String title) {
Object o = customFields.get(title);
if (o == null)
return null;
else
return o.getClass();
}
public Object getCustomFieldDefVal(String title) {
return customFields.get(title);
}
public void removeCustomField(String title) {
customFields.remove(title);
/* the property field is removed from all the existant resources */
Iterator it = resources.iterator();
while (it.hasNext()) {
((HumanResource)it.next()).removeCustomField(title);
}
}
public Hashtable getCustomFields()
{
return this.customFields;
}
public ProjectResource getById(int id) {
// Linear search is not really efficent, but we dont have so many
// resources !?
ProjectResource pr = null;
for (int i = 0; i < resources.size(); i++)
if (((ProjectResource) resources.get(i)).getId() == id) {
pr = (ProjectResource) resources.get(i);
break;
}
return pr;
}
public List getResources() {
return resources;
}
public ProjectResource[] getResourcesArray() {
return (ProjectResource[]) resources.toArray(new ProjectResource[resources.size()]);
}
public void remove(ProjectResource resource) {
fireResourcesRemoved(new ProjectResource[] { resource });
resources.remove(resource);
}
public void remove(ProjectResource resource, GPUndoManager myUndoManager) {
final ProjectResource res = resource;
myUndoManager.undoableEdit("Delete Human OK", new Runnable() {
public void run() {
fireResourcesRemoved(new ProjectResource[] { res });
resources.remove(res);
Mediator.getGanttProjectSingleton().getResourcePanel().getResourceTreeTableModel().updateResources();
}
});
}
public void save(OutputStream target) {
}
public void clear() {
fireCleanup();
resources.clear();
}
public void addView(ResourceView view) {
myViews.add(view);
}
private void fireResourceAdded(ProjectResource resource) {
ResourceEvent e = new ResourceEvent(this, resource);
for (Iterator i = myViews.iterator(); i.hasNext();) {
ResourceView nextView = (ResourceView) i.next();
nextView.resourceAdded(e);
}
}
void fireResourceChanged(ProjectResource resource) {
ResourceEvent e = new ResourceEvent(this, resource);
for (Iterator i = myViews.iterator(); i.hasNext();) {
ResourceView nextView = (ResourceView) i.next();
nextView.resourceChanged(e);
}
}
private void fireResourcesRemoved(ProjectResource[] resources) {
ResourceEvent e = new ResourceEvent(this, resources);
for (int i = 0; i < myViews.size(); i++) {
ResourceView nextView = (ResourceView) myViews.get(i);
nextView.resourcesRemoved(e);
}
}
public void fireAssignmentsChanged(ProjectResource resource) {
ResourceEvent e = new ResourceEvent(this, resource);
for (Iterator i = myViews.iterator(); i.hasNext();) {
ResourceView nextView = (ResourceView) i.next();
nextView.resourceAssignmentsChanged(e);
}
}
private void fireCleanup() {
fireResourcesRemoved((ProjectResource[]) resources
.toArray(new ProjectResource[resources.size()]));
}
/** Move up the resource number index */
public void up(HumanResource hr) {
int index = resources.indexOf(hr);
assert index>=0;
resources.remove(index);
resources.add(index - 1, hr);
fireResourceChanged(hr);
}
/** Move down the resource number index */
public void down(HumanResource hr) {
int index = resources.indexOf(hr);
assert index>=0;
resources.remove(index);
resources.add(index + 1, hr);
fireResourceChanged(hr);
}
public Map importData(ResourceManager resourceManager) {
Map original2imported = new HashMap();
if (resourceManager instanceof HumanResourceManager == false) {
throw new IllegalArgumentException(
"I expect resource manager to be HumanResourceManager");
}
HumanResourceManager hrManager = (HumanResourceManager) resourceManager;
List resources = hrManager.getResources();
for (int i = 0; i < resources.size(); i++) {
HumanResource next = (HumanResource) resources.get(i);
importData(next, original2imported);
}
return original2imported;
}
private void importData(HumanResource next, Map original2imported) {
HumanResource imported = (HumanResource) create(next.getName(),
nextFreeId);
if (next.getDaysOff() != null)
for (int i = 0; i < next.getDaysOff().size(); i++)
imported.addDaysOff((GanttDaysOff) ((GanttDaysOff) next
.getDaysOff().get(i)).clone());
imported.setName(next.getName());
imported.setDescription(next.getDescription());
imported.setMail(next.getMail());
imported.setPhone(next.getPhone());
imported.setRole(next.getRole());
original2imported.put(next, imported);
}
}
The table below shows all metrics for HumanResourceManager.java.




