Coverage Report - org.openpermis.basic.TimePeriod
 
Classes in this File Line Coverage Branch Coverage Complexity
TimePeriod
N/A
N/A
1.667
TimePeriod$1
N/A
N/A
1.667
TimePeriod$EmptyTimePeriod
66%
8/12
25%
1/4
1.667
TimePeriod$InfiniteTimePeriod
71%
10/14
33%
2/6
1.667
 
 1  
 /*
 2  
  * Copyright (c) 2009, Swiss Federal Department of Defence Civil Protection and Sport
 3  
  *                     (http://www.vbs.admin.ch)
 4  
  * Copyright (c) 2009, Ergon Informatik AG (http://www.ergon.ch)
 5  
  * All rights reserved.
 6  
  *
 7  
  * Licensed under the Open Permis License which accompanies this distribution,
 8  
  * and is available at http://www.openpermis.org/BSDlicenceKent.txt
 9  
  */
 10  
 package org.openpermis.basic;
 11  
 
 12  
 import org.openpermis.policy.TimeStamp;
 13  
 
 14  
 
 15  
 /**
 16  
  * A period of time.
 17  
  * @since 0.3.0
 18  
  */
 19  
 public interface TimePeriod {
 20  
         
 21  
         //---- Static
 22  
 
 23  
         /**
 24  
          * An infinite period of time.
 25  
          * @since 0.3.0
 26  
          */
 27  
         public static final TimePeriod INFINITE = new InfiniteTimePeriod();
 28  
         
 29  
         /**
 30  
          * An empty period of time.
 31  
          * @since 0.3.0
 32  
          */
 33  
         public static final TimePeriod EMPTY = new EmptyTimePeriod();
 34  
 
 35  
         
 36  
         //---- Methods
 37  
         
 38  
         /**
 39  
          * Returns true if this time period contains current time.
 40  
          * @param currentTime a {@link TimeStamp}.
 41  
          * @return true if this time period contains current time.
 42  
          * @since 0.3.0
 43  
          */
 44  
         boolean contains (TimeStamp currentTime);
 45  
 
 46  
         /**
 47  
          * Returns a constrained time period.
 48  
          * @param constraint a {@link TimePeriodConstraint}.
 49  
          * @param timeStamp the current {@link TimeStamp}.
 50  
          * @return the constrained time period.
 51  
          * @since 0.3.0
 52  
          */
 53  
         TimePeriod constrain (TimePeriodConstraint constraint, TimeStamp timeStamp);
 54  
         
 55  
         /**
 56  
          * Returns a constrained time period.
 57  
          * @param period a {@link TimePeriod}.
 58  
          * @param timeStamp a {@link TimeStamp}.
 59  
          * @return the constrained time period.
 60  
          * @since 0.3.0
 61  
          */
 62  
         TimePeriod constrain (TimePeriod period, TimeStamp timeStamp);
 63  
         
 64  
         //---- Classes
 65  
         
 66  
         /**
 67  
          * An infinite period of time.
 68  
          * @since 0.3.0
 69  
          */
 70  1
         public static final class InfiniteTimePeriod implements TimePeriod {
 71  
 
 72  
                 /**
 73  
                  * @since 0.3.0
 74  
                  */
 75  1
                 private InfiniteTimePeriod () {
 76  
                         // Prevents instantiation.
 77  1
                 }
 78  
                 
 79  
                 /**
 80  
                  * @since 0.3.0
 81  
                  */
 82  
                 public TimePeriod constrain (TimePeriodConstraint constraint, TimeStamp timeStamp) {
 83  14
                         if (constraint.getMinimumValidUpTo() != null) {
 84  0
                                 return TimePeriod.EMPTY;
 85  
                         }
 86  14
                         return this.constrain(constraint.getAbsolutePeriod(), timeStamp);
 87  
                 }
 88  
 
 89  
                 /**
 90  
                  * @since 0.3.0
 91  
                  */
 92  
                 public TimePeriod constrain (TimePeriod period, TimeStamp timeStamp) {
 93  17
                         return period;
 94  
                 }
 95  
 
 96  
                 /**
 97  
                  * @since 0.3.0
 98  
                  */
 99  
                 public boolean contains (TimeStamp currentTime) {
 100  45
                         return true;
 101  
                 }
 102  
                 
 103  
                 /**
 104  
                  * @since 0.3.0
 105  
                  */
 106  
                 public boolean equals (Object object) {
 107  19
                         if (this == object) {
 108  19
                                 return true;
 109  
                         }
 110  0
                         if (object instanceof InfiniteTimePeriod) {
 111  0
                                 return true;
 112  
                         }
 113  0
                         return false;
 114  
                 }
 115  
 
 116  
                 /**
 117  
                  * @since 0.3.0
 118  
                  */
 119  
                 public int hashCode () {
 120  12
                         return this.getClass().hashCode();
 121  
                 }
 122  
                 
 123  
         }
 124  
         
 125  
         /**
 126  
          * An empty period of time.
 127  
          * @since 0.3.0
 128  
          */
 129  1
         public static final class EmptyTimePeriod implements TimePeriod {
 130  
 
 131  
                 /**
 132  
                  * @since 0.3.0
 133  
                  */
 134  1
                 private EmptyTimePeriod () {
 135  
                         // Prevents instantiation.
 136  1
                 }
 137  
                 
 138  
                 /**
 139  
                  * @since 0.3.0
 140  
                  */
 141  
                 public TimePeriod constrain (TimePeriodConstraint constraint, TimeStamp currentTime) {
 142  1
                         return EMPTY;
 143  
                 }
 144  
 
 145  
                 /**
 146  
                  * @since 0.3.0
 147  
                  */
 148  
                 public TimePeriod constrain (TimePeriod period, TimeStamp timeStamp) {
 149  2
                         return EMPTY;
 150  
                 }
 151  
 
 152  
                 /**
 153  
                  * @since 0.3.0
 154  
                  */
 155  
                 public boolean contains (TimeStamp currentTime) {
 156  2
                         return false;
 157  
                 }
 158  
                 
 159  
                 /**
 160  
                  * @since 0.3.0
 161  
                  */
 162  
                 public boolean equals (Object object) {
 163  7
                         if (this == object) {
 164  7
                                 return true;
 165  
                         }
 166  0
                         if (object instanceof EmptyTimePeriod) {
 167  0
                                 return true;
 168  
                         }
 169  0
                         return false;
 170  
                 }
 171  
 
 172  
                 /**
 173  
                  * @since 0.3.0
 174  
                  */
 175  
                 public int hashCode () {
 176  0
                         return this.getClass().hashCode();
 177  
                 }
 178  
         }
 179  
 
 180  
 }