Source for gnu.inet.ldap.Modification

   1: /*
   2:  * Modification.java
   3:  * Copyright (C) 2004 The Free Software Foundation
   4:  * 
   5:  * This file is part of GNU inetlib, a library.
   6:  * 
   7:  * GNU inetlib is free software; you can redistribute it and/or modify
   8:  * it under the terms of the GNU General Public License as published by
   9:  * the Free Software Foundation; either version 2 of the License, or
  10:  * (at your option) any later version.
  11:  * 
  12:  * GNU inetlib is distributed in the hope that it will be useful,
  13:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15:  * GNU General Public License for more details.
  16:  * 
  17:  * You should have received a copy of the GNU General Public License
  18:  * along with this library; if not, write to the Free Software
  19:  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  20:  * 
  21:  * Linking this library statically or dynamically with other modules is
  22:  * making a combined work based on this library.  Thus, the terms and
  23:  * conditions of the GNU General Public License cover the whole
  24:  * combination.
  25:  *
  26:  * As a special exception, the copyright holders of this library give you
  27:  * permission to link this library with independent modules to produce an
  28:  * executable, regardless of the license terms of these independent
  29:  * modules, and to copy and distribute the resulting executable under
  30:  * terms of your choice, provided that you also meet, for each linked
  31:  * independent module, the terms and conditions of the license of that
  32:  * module.  An independent module is a module which is not derived from
  33:  * or based on this library.  If you modify this library, you may extend
  34:  * this exception to your version of the library, but you are not
  35:  * obliged to do so.  If you do not wish to do so, delete this
  36:  * exception statement from your version.
  37:  */
  38: 
  39: package gnu.inet.ldap;
  40: 
  41: import java.util.Set;
  42: 
  43: /**
  44:  * An individual modification of an object's attributes.
  45:  * 
  46:  * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
  47:  */
  48: public final class Modification
  49:   extends AttributeValues
  50: {
  51: 
  52:   /**
  53:    * Add the specified values to the attribute, creating the attribute if
  54:    * necessary.
  55:    */
  56:   public static final int ADD = 0;
  57: 
  58:   /**
  59:    * Delete the specified values from the given attribute, removing the
  60:    * entire attribute if no values are listed, or if all current values of
  61:    * the attribute are listed.
  62:    */ 
  63:   public static final int DELETE = 1;
  64: 
  65:   /**
  66:    * Replace all existing values of the given attribute with the new values,
  67:    * creating the attribute if it did not exist. A replace with no value
  68:    * deletes the entire attribute if it exists, and is ignored otherwise.
  69:    */
  70:   public static final int REPLACE = 2;
  71: 
  72:   /**
  73:    * The operation specified by this modification.
  74:    * One of: ADD, DELETE, or REPLACE
  75:    */
  76:   protected final int operation;
  77: 
  78:   /**
  79:    * Constructor.
  80:    * @param operation the operation
  81:    * @param type the attribute type
  82:    * @param values the values to assign
  83:    */
  84:   public Modification(int operation, String type, Set values)
  85:   {
  86:     super(type, values);
  87:     if (operation < ADD || operation > REPLACE)
  88:       {
  89:         throw new IllegalArgumentException("unknown operation");
  90:       }
  91:     this.operation = operation;
  92:   }
  93: 
  94:   /**
  95:    * @see #operation
  96:    */
  97:   public int getOperation()
  98:   {
  99:     return operation;
 100:   }
 101: 
 102: }