/*
Copyright 2003-2012 Dmitry Barashev, GanttProject Team
This file is part of GanttProject, an opensource project management tool.
GanttProject is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GanttProject is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GanttProject. If not, see <http://www.gnu.org/licenses/>.
*/
package org.ganttproject.impex.htmlpdf;
import java.text.DateFormat;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import com.google.common.base.Joiner;
import biz.ganttproject.core.model.task.TaskDefaultColumn;
import net.sourceforge.ganttproject.CustomProperty;
import net.sourceforge.ganttproject.CustomPropertyDefinition;
import net.sourceforge.ganttproject.IGanttProject;
import net.sourceforge.ganttproject.ResourceDefaultColumn;
import net.sourceforge.ganttproject.language.GanttLanguage;
import net.sourceforge.ganttproject.resource.HumanResource;
import net.sourceforge.ganttproject.task.CustomColumnsValues;
import net.sourceforge.ganttproject.task.Task;
import net.sourceforge.ganttproject.task.TaskProperties;
public class PropertyFetcher {
private static final GanttLanguage language = GanttLanguage.getInstance();
private final IGanttProject myProject;
public PropertyFetcher(IGanttProject project) {
myProject = project;
}
String i18n(String key) {
return language.getCorrectedLabel(key);
}
public void getTaskAttributes(Task t, Map<String, String> id2value) {
id2value.put(TaskDefaultColumn.PRIORITY.getStub().getID(), i18n(t.getPriority().getI18nKey()));
DateFormat dateFormat = language.getShortDateFormat();
id2value.put(TaskDefaultColumn.NAME.getStub().getID(), t.getName());
id2value.put(TaskDefaultColumn.BEGIN_DATE.getStub().getID(), dateFormat.format(t.getStart().getTime()));
id2value.put(TaskDefaultColumn.END_DATE.getStub().getID(), dateFormat.format(t.getDisplayEnd().getTime()));
id2value.put(TaskDefaultColumn.DURATION.getStub().getID(), String.valueOf(t.getDuration().getLength()));
id2value.put(TaskDefaultColumn.COMPLETION.getStub().getID(), String.valueOf(t.getCompletionPercentage()));
id2value.put(TaskDefaultColumn.PREDECESSORS.getStub().getID(), TaskProperties.formatPredecessors(t, ", "));
id2value.put(TaskDefaultColumn.COORDINATOR.getStub().getID(), TaskProperties.formatCoordinators(t));
id2value.put(TaskDefaultColumn.RESOURCES.getStub().getID(), TaskProperties.formatResources(Arrays.asList(t.getAssignments())));
List<Integer> outlinePath = t.getManager().getTaskHierarchy().getOutlinePath(t);
id2value.put(TaskDefaultColumn.OUTLINE_NUMBER.getStub().getID(), Joiner.on('.').join(outlinePath));
id2value.put(TaskDefaultColumn.ID.getStub().getID(), String.valueOf(t.getTaskID()));
id2value.put(TaskDefaultColumn.COST.getStub().getID(), t.getCost().getValue().toPlainString());
CustomColumnsValues customValues = t.getCustomValues();
for (CustomPropertyDefinition def : myProject.getTaskCustomColumnManager().getDefinitions()) {
Object value = customValues.getValue(def);
String valueAsString = value == null ? "" : value.toString();
id2value.put(def.getID(), valueAsString);
}
}
public void getResourceAttributes(HumanResource hr, Map<String, String> id2value) {
id2value.put(ResourceDefaultColumn.NAME.getStub().getID(), hr.getName());
id2value.put(ResourceDefaultColumn.ROLE.getStub().getID(), hr.getRole().getName());
id2value.put(ResourceDefaultColumn.EMAIL.getStub().getID(), hr.getMail());
id2value.put(ResourceDefaultColumn.PHONE.getStub().getID(), hr.getPhone());
id2value.put(ResourceDefaultColumn.STANDARD_RATE.getStub().getID(), hr.getStandardPayRate().toPlainString());
id2value.put(ResourceDefaultColumn.TOTAL_COST.getStub().getID(), hr.getTotalCost().toPlainString());
List<CustomProperty> customFields = hr.getCustomProperties();
for (CustomProperty property : customFields) {
id2value.put(property.getDefinition().getID(), property.getValueAsString());
}
}
}