001    /*
002     * Copyright 2007-2014 UnboundID Corp.
003     * All Rights Reserved.
004     */
005    /*
006     * Copyright (C) 2008-2014 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;
022    
023    
024    
025    
026    import static com.unboundid.util.StaticUtils.*;
027    
028    
029    
030    /**
031     * This enum defines a set of change types that are associated with operations
032     * that may be processed in an LDAP directory server.  The defined change types
033     * are "add", "delete", "modify", and "modify DN".
034     */
035    public enum ChangeType
036    {
037      /**
038       * Indicates that the change type is for an add operation.
039       */
040      ADD("add"),
041    
042    
043    
044      /**
045       * Indicates that the change type is for a delete operation.
046       */
047      DELETE("delete"),
048    
049    
050    
051      /**
052       * Indicates that the change type is for a modify operation.
053       */
054      MODIFY("modify"),
055    
056    
057    
058      /**
059       * Indicates that the change type is for a modify DN operation.
060       */
061      MODIFY_DN("moddn");
062    
063    
064    
065      // The human-readable name for this change type.
066      private final String name;
067    
068    
069    
070      /**
071       * Creates a new change type with the specified name.
072       *
073       * @param  name  The human-readable name for this change type.
074       */
075      private ChangeType(final String name)
076      {
077        this.name = name;
078      }
079    
080    
081    
082      /**
083       * Retrieves the human-readable name for this change type.
084       *
085       * @return  The human-readable name for this change type.
086       */
087      public String getName()
088      {
089        return name;
090      }
091    
092    
093    
094      /**
095       * Retrieves the change type with the specified name.
096       *
097       * @param  name  The name of the change type to retrieve.
098       *
099       * @return  The requested change type, or {@code null} if no such change type
100       *          is defined.
101       */
102      public static ChangeType forName(final String name)
103      {
104        final String lowerName = toLowerCase(name);
105        if (lowerName.equals("add"))
106        {
107          return ADD;
108        }
109        else if (lowerName.equals("delete"))
110        {
111          return DELETE;
112        }
113        else if (lowerName.equals("modify"))
114        {
115          return MODIFY;
116        }
117        else if (lowerName.equals("moddn") || lowerName.equals("modrdn"))
118        {
119          return MODIFY_DN;
120        }
121        else
122        {
123          return null;
124        }
125      }
126    
127    
128    
129      /**
130       * Retrieves a string representation for this change type.
131       *
132       * @return  A string representation for this change type.
133       */
134      @Override()
135      public String toString()
136      {
137        return name;
138      }
139    }