Coverage Report - de.smartics.properties.api.config.domain.key.ConfigurationKey
 
Classes in this File Line Coverage Branch Coverage Complexity
ConfigurationKey
0%
0/35
0%
0/18
2,375
 
 1  
 /*
 2  
  * Copyright 2012-2013 smartics, Kronseder & Reiner GmbH
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *     http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 package de.smartics.properties.api.config.domain.key;
 17  
 
 18  
 import java.io.Serializable;
 19  
 
 20  
 import org.apache.commons.lang.StringUtils;
 21  
 
 22  
 import de.smartics.util.lang.Arguments;
 23  
 import de.smartics.util.lang.NullArgumentException;
 24  
 
 25  
 /**
 26  
  * The configuration key identifies a configuration. With this key all
 27  
  * configuration values can be accessed by their local configuration keys.
 28  
  */
 29  0
 public final class ConfigurationKey implements Serializable,
 30  
     Comparable<ConfigurationKey>
 31  
 {
 32  
   // ********************************* Fields *********************************
 33  
 
 34  
   // --- constants ------------------------------------------------------------
 35  
 
 36  
   /**
 37  
    * The class version identifier.
 38  
    * <p>
 39  
    * The value of this constant is {@value}.
 40  
    * </p>
 41  
    */
 42  
   private static final long serialVersionUID = 1L;
 43  
 
 44  
   // --- members --------------------------------------------------------------
 45  
 
 46  
   /**
 47  
    * The identifier of the environment the application is deployed in.
 48  
    *
 49  
    * @serial
 50  
    */
 51  
   private final EnvironmentId environmentId;
 52  
 
 53  
   /**
 54  
    * The identifier of the application whose configuration is requested.
 55  
    *
 56  
    * @serial
 57  
    */
 58  
   private final ApplicationId applicationId;
 59  
 
 60  
   /**
 61  
    * The pre-calculated hash code of this instance.
 62  
    *
 63  
    * @serial
 64  
    */
 65  
   private final int hashCodeValue;
 66  
 
 67  
   // ****************************** Initializer *******************************
 68  
 
 69  
   // ****************************** Constructors ******************************
 70  
 
 71  
   /**
 72  
    * Default constructor.
 73  
    *
 74  
    * @param applicationId the identifier of the application whose configuration
 75  
    *          is requested.
 76  
    * @param environmentId the identifier of the environment the application is
 77  
    *          deployed in.
 78  
    * @throws NullArgumentException if {@code applicationId} or
 79  
    *           {@code environmentId} is <code>null</code>.
 80  
    */
 81  
   public ConfigurationKey(final EnvironmentId environmentId, final ApplicationId applicationId
 82  
       ) throws NullArgumentException
 83  0
   {
 84  0
     Arguments.checkNotNull("environmentId", environmentId);
 85  0
     Arguments.checkNotNull("applicationId", applicationId);
 86  
 
 87  0
     this.environmentId = environmentId;
 88  0
     this.applicationId = applicationId;
 89  0
     this.hashCodeValue = calcHashCode();
 90  0
   }
 91  
 
 92  
   // ****************************** Inner Classes *****************************
 93  
 
 94  
   // ********************************* Methods ********************************
 95  
 
 96  
   // --- init -----------------------------------------------------------------
 97  
 
 98  
   private int calcHashCode()
 99  
   {
 100  0
     int result = 17;
 101  0
     result = 37 * result + environmentId.hashCode();
 102  0
     result = 37 * result + applicationId.hashCode();
 103  
 
 104  0
     return result;
 105  
   }
 106  
 
 107  
   // --- get&set --------------------------------------------------------------
 108  
 
 109  
   /**
 110  
    * Returns the identifier of the environment the application is deployed in.
 111  
    *
 112  
    * @return the identifier of the environment the application is deployed in.
 113  
    */
 114  
   public EnvironmentId getEnvironmentId()
 115  
   {
 116  0
     return environmentId;
 117  
   }
 118  
 
 119  
   /**
 120  
    * Returns the identifier of the application whose configuration is requested.
 121  
    *
 122  
    * @return the identifier of the application whose configuration is requested.
 123  
    */
 124  
   public ApplicationId getApplicationId()
 125  
   {
 126  0
     return applicationId;
 127  
   }
 128  
 
 129  
   // --- business -------------------------------------------------------------
 130  
 
 131  
   // --- object basics --------------------------------------------------------
 132  
 
 133  
   /**
 134  
    * Returns the hash code of the object.
 135  
    *
 136  
    * @return the hash code.
 137  
    */
 138  
   @Override
 139  
   public int hashCode()
 140  
   {
 141  0
     return hashCodeValue;
 142  
   }
 143  
 
 144  
   /**
 145  
    * Returns <code>true</code> if the given object is semantically equal to the
 146  
    * given object, <code>false</code> otherwise.
 147  
    *
 148  
    * @param object the instance to compare to.
 149  
    * @return <code>true</code> if the given object is semantically equal to the
 150  
    *         given object, <code>false</code> otherwise.
 151  
    */
 152  
   @Override
 153  
   public boolean equals(final Object object)
 154  
   {
 155  0
     if (this == object)
 156  
     {
 157  0
       return true;
 158  
     }
 159  0
     else if (object == null || getClass() != object.getClass())
 160  
     {
 161  0
       return false;
 162  
     }
 163  
 
 164  0
     final ConfigurationKey other = (ConfigurationKey) object;
 165  
 
 166  0
     return (applicationId.equals(other.applicationId) && environmentId
 167  
         .equals(other.environmentId));
 168  
   }
 169  
 
 170  
   /**
 171  
    * {@inheritDoc}
 172  
    *
 173  
    * @see java.lang.Comparable#compareTo(java.lang.Object)
 174  
    */
 175  
   @Override
 176  
   public int compareTo(final ConfigurationKey o)
 177  
   {
 178  0
     final int result = environmentId.compareTo(o.environmentId);
 179  0
     if (result == 0)
 180  
     {
 181  0
       return applicationId.compareTo(o.applicationId);
 182  
     }
 183  0
     return result;
 184  
   }
 185  
 
 186  
   /**
 187  
    * Returns the string representation of the object.
 188  
    *
 189  
    * @return the string representation of the object.
 190  
    */
 191  
   @Override
 192  
   public String toString()
 193  
   {
 194  0
     final StringBuilder buffer = new StringBuilder();
 195  
 
 196  0
     final String environmentIdString = environmentId.toString();
 197  0
     if(StringUtils.isNotBlank(environmentIdString))
 198  
     {
 199  0
       buffer.append(environmentIdString).append('/');
 200  
     }
 201  
 
 202  0
     final String applicationIdString = applicationId.toString();
 203  0
     if(StringUtils.isNotBlank(applicationIdString))
 204  
     {
 205  0
       buffer.append(applicationIdString);
 206  
     }
 207  
 
 208  0
     if(buffer.length() == 0)
 209  
     {
 210  0
       buffer.append("<no named key>");
 211  
     }
 212  
 
 213  0
     return buffer.toString();
 214  
   }
 215  
 }