001    /*
002     * Copyright 2010-2015 UnboundID Corp.
003     * All Rights Reserved.
004     */
005    /*
006     * Copyright (C) 2010-2015 UnboundID Corp.
007     *
008     * This program is free software; you can redistribute it and/or modify
009     * it under the terms of the GNU General Public License (GPLv2 only)
010     * or the terms of the GNU Lesser General Public License (LGPLv2.1 only)
011     * as published by the Free Software Foundation.
012     *
013     * This program is distributed in the hope that it will be useful,
014     * but WITHOUT ANY WARRANTY; without even the implied warranty of
015     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
016     * GNU General Public License for more details.
017     *
018     * You should have received a copy of the GNU General Public License
019     * along with this program; if not, see <http://www.gnu.org/licenses>.
020     */
021    package com.unboundid.ldap.sdk.controls;
022    
023    
024    
025    /**
026     * This enum defines the synchronization states for entries returned with the
027     * content synchronization state control.  See the documentation for the
028     * {@link ContentSyncRequestControl} class for more information about using the
029     * content synchronization operation.
030     */
031    public enum ContentSyncInfoType
032    {
033      /**
034       * Indicates that the associated content synchronization info response only
035       * provides a new state cookie.
036       */
037      NEW_COOKIE((byte) 0x80),
038    
039    
040    
041      /**
042       * Indicates that the associated content synchronization info response is used
043       * to indicate that a delete phase has ended.
044       */
045      REFRESH_DELETE((byte) 0xA1),
046    
047    
048    
049      /**
050       * Indicates that the associated content synchronization info response is used
051       * to indicate that a present phase has ended.
052       */
053      REFRESH_PRESENT((byte) 0xA2),
054    
055    
056    
057      /**
058       * Indicates that the associated content synchronization info response is used
059       * to provide information about multiple entries which have been deleted or
060       * multiple entries which have remained unchanged.
061       */
062      SYNC_ID_SET((byte) 0xA3);
063    
064    
065    
066      // The BER type used for this sync info type in the value of a content
067      // synchronization info message.
068      private final byte type;
069    
070    
071    
072      /**
073       * Creates a new content synchronization info type value with the specified
074       * BER type.
075       *
076       * @param  type  The BER type used for this sync info type in the value of a
077       *               content synchronization info message.
078       */
079      private ContentSyncInfoType(final byte type)
080      {
081        this.type = type;
082      }
083    
084    
085    
086      /**
087       * Retrieves the BER type for this synchronization info type value.
088       *
089       * @return  The BER type for this synchronization info type value.
090       */
091      public byte getType()
092      {
093        return type;
094      }
095    
096    
097    
098      /**
099       * Retrieves the content synchronization info type with the specified BER
100       * type.
101       *
102       * @param  type  The BER type of the content synchronization info type value
103       *               to retrieve.
104       *
105       * @return  The content synchronization info value with the specified BER
106       *          type, or {@code null} if the given value does not correspond with
107       *          any defined type.
108       */
109      public static ContentSyncInfoType valueOf(final byte type)
110      {
111        if (type == NEW_COOKIE.getType())
112        {
113          return NEW_COOKIE;
114        }
115        else if (type == REFRESH_DELETE.getType())
116        {
117          return REFRESH_DELETE;
118        }
119        else if (type == REFRESH_PRESENT.getType())
120        {
121          return REFRESH_PRESENT;
122        }
123        else if (type == SYNC_ID_SET.getType())
124        {
125          return SYNC_ID_SET;
126        }
127        else
128        {
129          return null;
130        }
131      }
132    }