Coverage Report - org.melati.poem.IntegrityFix
 
Classes in this File Line Coverage Branch Coverage Complexity
IntegrityFix
N/A
N/A
1
 
 1  
 /*
 2  
  * $Source$
 3  
  * $Revision$
 4  
  *
 5  
  * Copyright (C) 2001 William Chesters
 6  
  *
 7  
  * Part of Melati (http://melati.org), a framework for the rapid
 8  
  * development of clean, maintainable web applications.
 9  
  *
 10  
  * Melati is free software; Permission is granted to copy, distribute
 11  
  * and/or modify this software under the terms either:
 12  
  *
 13  
  * a) the GNU General Public License as published by the Free Software
 14  
  *    Foundation; either version 2 of the License, or (at your option)
 15  
  *    any later version,
 16  
  *
 17  
  *    or
 18  
  *
 19  
  * b) any version of the Melati Software License, as published
 20  
  *    at http://melati.org
 21  
  *
 22  
  * You should have received a copy of the GNU General Public License and
 23  
  * the Melati Software License along with this program;
 24  
  * if not, write to the Free Software Foundation, Inc.,
 25  
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA to obtain the
 26  
  * GNU General Public License and visit http://melati.org to obtain the
 27  
  * Melati Software License.
 28  
  *
 29  
  * Feel free to contact the Developers of Melati (http://melati.org),
 30  
  * if you would like to work out a different arrangement than the options
 31  
  * outlined here.  It is our intention to allow Melati to be used by as
 32  
  * wide an audience as possible.
 33  
  *
 34  
  * This program is distributed in the hope that it will be useful,
 35  
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 36  
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 37  
  * GNU General Public License for more details.
 38  
  *
 39  
  * Contact details for copyright holder:
 40  
  *
 41  
  *     William Chesters <williamc@paneris.org>
 42  
  *     http://paneris.org/~williamc
 43  
  *     Obrechtstraat 114, 2517VX Den Haag, The Netherlands
 44  
  */
 45  
 package org.melati.poem;
 46  
 
 47  
 import java.util.Enumeration;
 48  
 import java.util.Map;
 49  
 
 50  
 /**
 51  
  * Class representing what to do about references to a {@link Persistent}
 52  
  * which is about to be deleted.
 53  
  *
 54  
  * Three canned {@link IntegrityFix} policies are provided: {@link
 55  
  * StandardIntegrityFix#delete}, which simply deletes all referring objects,
 56  
  * {@link StandardIntegrityFix#clear}, which <TT>NULL</TT>s out all
 57  
  * references, and {@link StandardIntegrityFix#prevent}, which prevents
 58  
  * deletion if there are any references which would be left dangling.
 59  
  *
 60  
  * @author WilliamC At paneris.org
 61  
  *
 62  
  */
 63  
 
 64  
 public interface IntegrityFix {
 65  
 
 66  
   /**
 67  
    * Do something about references from a given column to a
 68  
    * {@link Persistent} which is about to be deleted.  Called via {@link
 69  
    * Persistent#delete(Map)}, this gives the application programmer 
 70  
    * fine-grained control over how referential integrity is maintained.
 71  
    *
 72  
    *
 73  
    * @param referee   The object which is about to be deleted.
 74  
 
 75  
    * @param column    A column which refers to <TT>referee</TT>'s table:
 76  
    *                  <TT>column.getType()</TT> is a
 77  
    *                  <TT>ReferencePoemType</TT> with <TT>targetTable()</TT>
 78  
    *                  <TT>==</TT> <TT>referee.getTable()</TT>.
 79  
    *
 80  
    * @param refs      All the <TT>Persistent</TT>s of which <TT>column</TT>
 81  
    *                  actually points to <TT>referee</TT>.
 82  
    *
 83  
    * @param referenceFixOfColumn The column-to-<TT>IntegrityFix</TT>
 84  
    *         mapping passed into {@link Persistent#delete(Map)}.
 85  
    *
 86  
    * @return Either a list of the <TT>Persistent</TT>s from <TT>refs</TT> which
 87  
    *         constitute reasons why the <TT>referee</TT> can't be deleted 
 88  
    *         or the <TT>EmptyEnumeration</TT> if there are no references or 
 89  
    *         all <TT>refs</TT> have been cleared or deleted.
 90  
    */
 91  
 
 92  
   Enumeration<Persistent> referencesTo(Persistent referee, Column<?> column,
 93  
                            Enumeration<Persistent> refs, Map<Column<?>, IntegrityFix> referenceFixOfColumn);
 94  
   
 95  
   /**
 96  
    * Integrity fixes are set in the DSD by name. 
 97  
    * @return the name
 98  
    */
 99  
   String getName();
 100  
 }