EN · DE · RU · FR · ES

#583: SubscriptionHolder.java

projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java Classe Java, projectforge-business/src/main/java/org/projectforge/business/teamcal/externalsubscription/SubscriptionHolder.java 156 lignes · 94 code · 42 commentaires · 20 vides
Objectif : Fichier source : business/teamcal/externalsubscription/SubscriptionHolder.java. SubscriptionHolder.java fait partie de l'application open-source de gestion de projet ProjectForge.

Source (100 premières lignes)

/////////////////////////////////////////////////////////////////////////////
//
// Projet ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2026 Micromata GmbH, Allemagne (www.micromata.com)
//
// ProjectForge est sous double licence.
//
// Cette édition communautaire est un logiciel libre ; vous pouvez la redistribuer et/ou
// la modifier selon les termes de la GNU General Public License telle que publiée
// par la Free Software Foundation ; version 3 de la Licence.
//
// Cette édition communautaire est distribuée dans l'espoir qu'elle sera utile,
// mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de
// COMMERCIALISATION ou D'ADAPTATION À UN USAGE PARTICULIER. Voir la GNU General
// Public License pour plus de détails.
//
// Vous devriez avoir reçu une copie de la GNU General Public License avec
// ce programme ; sinon, consultez 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;

/**
 * Abstraction personnalisée d'une RangeMap. Vous pouvez ajouter des TeamEvents et y accéder via leurs dates de début et de fin.
 *
 * @author Johannes Unterstein (j.unterstein@micromata.de)
 */
public class SubscriptionHolder implements Serializable {
  private static final long serialVersionUID = 1188093201413097949L;

  // un jour en millisecondes
  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() {
    // le comparateur suivant compare par 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;
        }
        // à ce stade, aucune NPE ne peut se produire
        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) {
    // le tri doit être synchronisé
    synchronized (this) {
      if (!sorted) {

Historique Git

868d6abb7 2025 -> 2026
63081666f En-têtes des fichiers source : 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 @@
 // Projet ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2025 Micromata GmbH, Allemagne (www.micromata.com)
+// Copyright (C) 2001-2026 Micromata GmbH, Allemagne (www.micromata.com)
 //
 // ProjectForge est sous double licence.
 //

63081666f

En-têtes des fichiers source : 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 @@
 // Projet ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2024 Micromata GmbH, Allemagne (www.micromata.com)
+// Copyright (C) 2001-2025 Micromata GmbH, Allemagne (www.micromata.com)
 //
 // ProjectForge est sous double licence.
 //

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 @@
 // Projet ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2023 Micromata GmbH, Allemagne (www.micromata.com)
+// Copyright (C) 2001-2024 Micromata GmbH, Allemagne (www.micromata.com)
 //
 // ProjectForge est sous double licence.
 //

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 @@
 // Projet ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2022 Micromata GmbH, Allemagne (www.micromata.com)
+// Copyright (C) 2001-2023 Micromata GmbH, Allemagne (www.micromata.com)
 //
 // ProjectForge est sous double licence.
 //

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 @@
 // Projet ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2021 Micromata GmbH, Allemagne (www.micromata.com)
+// Copyright (C) 2001-2022 Micromata GmbH, Allemagne (www.micromata.com)
 //
 // ProjectForge est sous double licence.
 //