///////////////////////////////////////////////////////////////////////////// // // 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.task; import org.apache.commons.lang.StringUtils; import org.projectforge.common.StringHelper; import org.projectforge.fibu.ProjektDO; import org.projectforge.fibu.kost.Kost2DO; /** * * @author Kai Reinhard (k.reinhard@micromata.de) * */ public class TaskHelper { /** * Removes all white spaces and normalizes the item list (csv with coma as separator char without any spaces) and sort. Examples: * <ul> * <li>null -> null</li> * <li>"" -> ""</li> * <li>"5.123.13.09.02; 08, .12" -> ".12,08,5.123.13.09.02"</li> * </ul> * @param task * @return The normalized sorted string. */ public static String normalizeKost2BlackWhiteList(final TaskDO task) { return normalizeKost2BlackWhiteList(task.getKost2BlackWhiteList()); } /** * Removes all white spaces and normalizes the item list (csv with coma as separator char without any spaces) and sort. Examples: * <ul> * <li>null -> null</li> * <li>"" -> ""</li> * <li>"5.123.13.09.02; 08, .12" -> ".12,08,5.123.13.09.02"</li> * </ul> * @param task * @return The normalized sorted string. */ public static String normalizeKost2BlackWhiteList(final String kost2BlackWhiteList) { final String[] items = TaskDO.getKost2BlackWhiteItems(kost2BlackWhiteList); final String[] sortedItems = StringHelper.sortAndUnique(items); return StringHelper.listToString(",", sortedItems); } /** * Adds the given kost to the kost2BlackWhiteList string and returns the normalized string. * @param taskTree * @param task * @param kost * @return * @see #normalizeKost2BlackWhiteList(String) */ public static String addKost2(final TaskTree taskTree, final TaskDO task, final Kost2DO kost) { if (kost == null) { return task.getKost2BlackWhiteList(); } final StringBuffer buf = new StringBuffer(); if (StringUtils.isNotBlank(task.getKost2BlackWhiteList()) == true) { buf.append(task.getKost2BlackWhiteList()).append(","); } if (task.getId() == null && task.getParentTaskId() != null) { buf.append(kost.getFormattedNumber()); } else { final ProjektDO projekt = task.getId() != null ? taskTree.getProjekt(task.getId()) : taskTree.getProjekt(task.getParentTaskId()); if (projekt == null) { buf.append(kost.getFormattedNumber()); } else { final String projektKost2 = projekt.getKost(); final String kost2 = kost.getFormattedNumber(); if (kost2.startsWith(projektKost2) == false) { buf.append(kost.getFormattedNumber()); } else { buf.append(StringHelper.format2DigitNumber(kost.getKost2ArtId())); } } } return normalizeKost2BlackWhiteList(buf.toString()); } }