001 /*
002 * Copyright 2010-2013 UnboundID Corp.
003 * All Rights Reserved.
004 */
005 /*
006 * Copyright (C) 2010-2013 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 }