TemplateEntry.javaprojectforge-business/src/main/java/org/projectforge/business/teamcal/filter/TemplateEntry.java, содержащий Java-код для уровня фильтра поиска.Пакет: org.projectforge.business.teamcal.filter
Классы: TemplateEntry
Реализует: Serializable, Comparable<TemplateEntry>, Cloneable
Методы (36): getCalendarProperties, getName, setName, addNewCalendarProperties, removeCalendarProperties, getColorCode, getCalendarProperties, contains, isVisible, getVisibleCalendarIds, getCalendars, getCalendarIds, setDirty, compareTo, hashCode, equals, clone, isModified, getDefaultCalendarId, setDefaultCalendarId, isShowBirthdays, setShowBirthdays, isShowBreaks, setShowBreaks, isShowPlanning...
Поля (11): serialVersionUID, calendarProperties, visibleCalendarIds, name, defaultCalendarId, showBirthdays, showStatistics, timesheetUserId, selectedCalendar, showBreaks, showPlanning
Импорты: 9 пакетов
package org.projectforge.business.teamcal.filter;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import org.apache.commons.lang3.StringUtils;
import org.projectforge.Constants;
import org.projectforge.business.teamcal.admin.TeamCalCache;
import org.projectforge.business.teamcal.admin.model.TeamCalDO;
import org.projectforge.framework.configuration.ApplicationContextProvider;
import org.projectforge.framework.persistence.user.api.ThreadLocalUserContext;
import java.io.Serializable;
import java.util.*;
/**
* Сохраняет настройки одного именованного элемента фильтра.
*
* @author M. Lauterbach (m.lauterbach@micromata.de)
* @author K. Reinhard (k.reinhard@micromata.de)
*/
public class TemplateEntry implements Serializable, Comparable<TemplateEntry>, Cloneable {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(TemplateEntry.class);
private static final long serialVersionUID = 409057949195992116L;
private final Set<TemplateCalendarProperties> calendarProperties = new TreeSet<>();
private Set<Long> visibleCalendarIds;
@XStreamAsAttribute
private String name;
@XStreamAsAttribute
private Long defaultCalendarId;
@XStreamAsAttribute
private Boolean showBirthdays;
@XStreamAsAttribute
private Boolean showStatistics;
@XStreamAsAttribute
private Long timesheetUserId;
@XStreamAsAttribute
private String selectedCalendar;
@XStreamAsAttribute
private Boolean showBreaks = true;
@XStreamAsAttribute
private Boolean showPlanning;
public Set<TemplateCalendarProperties> getCalendarProperties() {
return calendarProperties;
}
/**
* @return имя
*/
public String getName() {
return name;
}
/**
* @param name имя для установки
* @return this для цепочки вызовов.
*/
public TemplateEntry setName(final String name) {
this.name = name;
return this;
}
public TemplateCalendarProperties addNewCalendarProperties(final TeamCalCalendarFilter filter, final Long calId) {
Objects.requireNonNull(calId);
final TemplateCalendarProperties props = new TemplateCalendarProperties();
props.setCalId(calId);
props.setColorCode(filter.getUsedColor(calId));
this.calendarProperties.add(props);
this.visibleCalendarIds = null;
return props;
}
public void removeCalendarProperties(final Long calId) {
Objects.requireNonNull(calId);
final TemplateCalendarProperties props = getCalendarProperties(calId);
if (props != null) {
this.calendarProperties.remove(props);
}
this.visibleCalendarIds = null;
}
public String getColorCode(final Long calendarId) {
final TemplateCalendarProperties props = getCalendarProperties(calendarId);
if (props == null) {
return null;
}
return props.getColorCode();
}
public TemplateCalendarProperties getCalendarProperties(final Long calendarId) {
if (calendarId == null) {
return null;
}
for (final TemplateCalendarProperties props : calendarProperties) {
if (calendarId.equals(props.getCalId())) {
return props;
}
}
return null;
}
public boolean contains(final Long calendarId) {
return getCalendarProperties(calendarId) != null;
}
public boolean isVisible(final Long calendarId) {
final TemplateCalendarProperties props = getCalendarProperties(calendarId);
return props != null && props.isVisible();
}
// ... (сокращено, всего 409 строк)
868d6abb7 2025 -> 2026 63081666f Заголовки исходных файлов: 2024 -> 2025. b79a1edcad Работа по миграции в процессе... (все тесты всех пакетов: ОК). 67805f2fc ThreadLocalUserContext.user -> ThreadLocalUserContext.loggedInUser (переименовано для избежания недопонимания в коде). 4c04cfd65 КРУПНОЕ ИЗМЕНЕНИЕ! Миграция целочисленных id на Long id (включая внешние ключи и т.д.)