EN · DE · RU · FR · ES

#583: SubscriptionHolder.java

projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java Java class, projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java 156 lines · 94 code · 42 comments · 20 blank
Purpose: Source file: business/teamcal/externalsubscription/SubscriptionHolder.java. SubscriptionHolder.java is part of the ProjectForge open-source project management application.

Source (first 100 lines)

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2026 Micromata GmbH, Germany (www.micromata.com)
//
// 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.business.teamcal.externalsubscription;

import org.projectforge.business.teamcal.event.TeamEventDao;
import org.projectforge.business.teamcal.event.model.TeamEventDO;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;

/**
 * Own abstraction of a RangeMap. You can add TeamEvents and access them through their start and end date.
 *
 * @author Johannes Unterstein (j.unterstein@micromata.de)
 */
public class SubscriptionHolder implements Serializable {
  private static final long serialVersionUID = 1188093201413097949L;

  // one day in milliseconds
  private static final int ONE_DAY = 86400000; // 60*60*24*1000

  // private static final long MIN_DATE_1800 = lendar

  private final List<TeamEventDO> eventList;

  private boolean sorted;

  public SubscriptionHolder() {
    eventList = new ArrayList<>();
    sorted = false;
  }

  public void clear() {
    eventList.clear();
    sorted = false;
  }

  public void add(final TeamEventDO value) {
    eventList.add(value);
    sorted = false;
  }

  public void sort() {
    // the following comparator compares by startDate
    final Comparator<TeamEventDO> comparator = new Comparator<TeamEventDO>() {
      @Override
      public int compare(final TeamEventDO o1, final TeamEventDO o2) {
        if ((o1 == null || o1.getStartDate() == null) && (o2 == null || o2.getStartDate() == null)) {
          return 0;
        }
        if (o1 == null || o1.getStartDate() == null) {
          return -1;
        }
        if (o2 == null || o2.getStartDate() == null) {
          return 1;
        }
        // at this point, no NPE could occur
        return o1.getStartDate().compareTo(o2.getStartDate());
      }
    };
    eventList.sort(comparator);
    sorted = true;
  }

  public TeamEventDO getEvent(final String uid) {
    for (final TeamEventDO teamEventDO : eventList) {
      if (teamEventDO.getUid() != null && Objects.equals(uid, teamEventDO.getUid()))
        return teamEventDO;
    }
    return null;
  }

  public List<TeamEventDO> getResultList(final Long startTime, final Long endTime, final boolean minimalAccess) {
    // sorting should by synchronized
    synchronized (this) {
      if (!sorted) {

Git History

868d6abb7 2025 -> 2026
63081666f Source file headers: 2024-> 2025.
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.
5f7ef41b8 Copyright 2021 -> 2022

868d6abb7

2025 -> 2026
868d6abb75cd191a892911ac8e45058932cf9074
diff --git a/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java b/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
index b72428eb4..59d0aea26 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2025 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2026 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge is dual-licensed.
 //

63081666f

Source file headers: 2024-> 2025.
63081666f620fb87315f01b817e560e0b2f6a33a
diff --git a/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java b/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
index 2a77bbd40..b72428eb4 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2024 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2025 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge is dual-licensed.
 //

b6092df09

Copyright 2023 -> 2024
b6092df0927c4a3b161e888445f31dcab57493f2
diff --git a/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java b/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
index 3d2311ec5..2a77bbd40 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2023 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2024 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge is dual-licensed.
 //

ab45d51fa

Copyright 2001-2022 -> 2001-2023.
ab45d51fa419ede6174b31d69987f96d4b841ff9
diff --git a/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java b/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
index ec12f1b3d..3d2311ec5 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2022 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2023 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge is dual-licensed.
 //

5f7ef41b8

Copyright 2021 -> 2022
5f7ef41b8cbbf29b1bff094f0c0b708dcaecb19e
diff --git a/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java b/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
index ba831ce6c..ec12f1b3d 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2021 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2022 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge is dual-licensed.
 //