Package org.projectforge.renderer.custom

Source Code of org.projectforge.renderer.custom.MicromataFormatter

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition 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; version 3 of the License.
//
// This community edition 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 this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.renderer.custom;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.projectforge.fibu.KostFormatter;
import org.projectforge.fibu.kost.Kost2DO;
import org.projectforge.fibu.kost.KostCache;
import org.projectforge.renderer.CellHolder;
import org.projectforge.renderer.RenderType;
import org.projectforge.renderer.RowHolder;
import org.projectforge.scripting.NullObject;
import org.projectforge.timesheet.TimesheetDO;
import org.projectforge.timesheet.TimesheetFilter;
import org.projectforge.web.HtmlHelper;
import org.projectforge.web.calendar.DateTimeFormatter;
import org.projectforge.web.common.OutputType;
import org.projectforge.web.task.TaskFormatter;
import org.projectforge.web.user.UserFormatter;

/**
* @author Sebastian Hardt (s.hardt@micromata.de)
*
*/
public class MicromataFormatter extends Formatter
{

  private TaskFormatter taskFormatter;

  private UserFormatter userFormatter;

  private DateTimeFormatter dateTimeFormatter;

  private KostCache kostCache;

  private HtmlHelper htmlHelper;

  @Override
  public Map<String, Object> getData(final List<TimesheetDO> timeSheets, final Integer taskId, final HttpServletRequest request,
      final HttpServletResponse response, final TimesheetFilter actionFilter)
      {

    final Map<String, Object> data = new HashMap<String, Object>();

    long durationSum = 0;

    for (final TimesheetDO timesheet : timeSheets) {
      durationSum += timesheet.getDuration();
    }

    final List<RowHolder> list = new ArrayList<RowHolder>();
    for (final TimesheetDO timesheet : timeSheets) {
      final RowHolder row = new RowHolder();
      if (actionFilter.getUserId() != null) {
        final Kost2DO kost2 = kostCache.getKost2(timesheet.getKost2Id());
        if (kost2 != null) {
          row.addCell(new CellHolder(KostFormatter.format(kost2)));
        } else {
          row.addCell(new CellHolder(""));
        }
      } else {
        row.addCell(new CellHolder(userFormatter.getFormattedUser(timesheet.getUser())));
      }
      final String taskPath = taskFormatter.getTaskPath(timesheet.getTaskId(), taskId, true, OutputType.PLAIN);
      row.addCell(new CellHolder(htmlHelper.formatXSLFOText(taskPath, true)));
      row.addCell(new CellHolder(dateTimeFormatter.getFormattedTimePeriod(timesheet.getTimePeriod(), RenderType.FOP, true)));
      row.addCell(new CellHolder(dateTimeFormatter.getFormattedDuration(timesheet.getTimePeriod())));
      row.addCell(new CellHolder(htmlHelper.formatXSLFOText(timesheet.getDescription(), true)));
      if (StringUtils.isNotBlank(timesheet.getLocation()) == true) {
        row.addCell(new CellHolder(htmlHelper.formatXSLFOText(timesheet.getLocation(), true)));
      } else {
        row.addCell(new CellHolder(""));
      }
      list.add(row);
    }

    data.put("list", list);
    data.put("title", getLocalizedString("timesheet.title.list"));
    data.put("systemDate", dateTimeFormatter.getFormattedDateTime(new Date()));
    data.put("searchStringLabel", getLocalizedString("searchString"));

    if (StringUtils.isNotEmpty(actionFilter.getSearchString()) == true) {
      data.put("searchString", htmlHelper.formatXSLFOText(actionFilter.getSearchString(), true));
    } else {
      data.put("searchString", NullObject.instance);
    }

    data.put("timePeriodLabel", getLocalizedString("timePeriod"));

    data.put("startTime", dateTimeFormatter.getFormattedDate(actionFilter.getStartTime()));
    data.put("stopTime", dateTimeFormatter.getFormattedDate(actionFilter.getStopTime()));
    data.put("taskLabel", getLocalizedString("task"));

    if (taskId != null) {
      data.put("task", taskFormatter.getTaskPath(taskId, true, OutputType.PLAIN));
    } else {
      data.put("task", NullObject.instance);
    }
    data.put("userLabel", getLocalizedString("timesheet.user"));

    if (actionFilter.getUserId() != null) {
      data.put("user", userFormatter.getFormattedUser(actionFilter.getUserId()));
    } else {
      data.put("user", NullObject.instance);
    }
    data.put("totalDurationLabel", getLocalizedString("timesheet.totalDuration"));

    final String str1 = dateTimeFormatter.getFormattedDuration(durationSum);
    final String str2 = dateTimeFormatter.getFormattedDuration(durationSum, dateTimeFormatter.getDurationOfWorkingDay(), -1);
    data.put("totalDuration", str1);
    if (str1.equals(str2) == false) {
      data.put("totalHours", str2);
    } else {
      data.put("totalHours", NullObject.instance);
    }

    data.put("optionsLabel", getLocalizedString("label.options"));
    data.put("deletedLabel", getLocalizedString("deleted"));

    data.put("deleted", actionFilter.isDeleted());

    data.put("durationLabel", getLocalizedString("timesheet.duration"));
    data.put("descriptionLabel", getLocalizedString("description"));
    data.put("locationLabel", getLocalizedString("timesheet.location"));

    return data;
      }

  /**
   * @param taskFormatter the taskFormatter to set
   */
  public void setTaskFormatter(final TaskFormatter taskFormatter)
  {
    this.taskFormatter = taskFormatter;
  }

  /**
   * @param userFormatter the userFormatter to set
   */
  public void setUserFormatter(final UserFormatter userFormatter)
  {
    this.userFormatter = userFormatter;
  }

  /**
   * @param dateTimeFormatter the dateTimeFormatter to set
   */
  public void setDateTimeFormatter(final DateTimeFormatter dateTimeFormatter)
  {
    this.dateTimeFormatter = dateTimeFormatter;
  }

  /**
   * @param htmlHelper the htmlHelper to set
   */
  public void setHtmlHelper(final HtmlHelper htmlHelper)
  {
    this.htmlHelper = htmlHelper;
  }

  public void setKostCache(final KostCache kostCache)
  {
    this.kostCache = kostCache;
  }
}
TOP

Related Classes of org.projectforge.renderer.custom.MicromataFormatter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.