KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sleepycat > persist > evolve > EntityConverter


1 /*-
2  * See the file LICENSE for redistribution information.
3  *
4  * Copyright (c) 2002,2006 Oracle. All rights reserved.
5  *
6  * $Id: EntityConverter.java,v 1.8 2006/12/05 01:35:36 mark Exp $
7  */

8
9 package com.sleepycat.persist.evolve;
10
11 import java.util.Collections JavaDoc;
12 import java.util.HashSet JavaDoc;
13 import java.util.Set JavaDoc;
14
15 /**
16  * A subclass of Converter that allows specifying keys to be deleted.
17  *
18  * <p>When a Converter is used with an entity class, secondary keys cannot be
19  * automatically deleted based on field deletion, because field Deleter objects
20  * are not used in conjunction with a Converter mutation. The EntityConverter
21  * can be used instead of a plain Converter to specify the key names to be
22  * deleted.</p>
23  *
24  * <p>It is not currently possible to rename or insert secondary keys when
25  * using a Converter mutation with an entity class.</p>
26  *
27  * @see Converter
28  * @see com.sleepycat.persist.evolve Class Evolution
29  * @author Mark Hayes
30  */

31 public class EntityConverter extends Converter {
32
33     private static final long serialVersionUID = -988428985370593743L;
34
35     private Set JavaDoc<String JavaDoc> deletedKeys;
36
37     /**
38      * Creates a mutation for converting all instances of the given entity
39      * class version to the current version of the class.
40      */

41     public EntityConverter(String JavaDoc entityClassName,
42                            int classVersion,
43                            Conversion conversion,
44                            Set JavaDoc<String JavaDoc> deletedKeys) {
45         super(entityClassName, classVersion, null, conversion);
46
47         /* Eclipse objects to assigning with a ternary operator. */
48         if (deletedKeys != null) {
49             this.deletedKeys = new HashSet JavaDoc(deletedKeys);
50         } else {
51             this.deletedKeys = Collections.emptySet();
52         }
53     }
54
55     /**
56      * Returns the set of key names that are to be deleted.
57      */

58     public Set JavaDoc<String JavaDoc> getDeletedKeys() {
59         return Collections.unmodifiableSet(deletedKeys);
60     }
61
62     /**
63      * Returns true if the deleted and renamed keys are equal in this object
64      * and given object, and if the {@link Converter#equals} superclass method
65      * returns true.
66      */

67     @Override JavaDoc
68     public boolean equals(Object JavaDoc other) {
69         if (other instanceof EntityConverter) {
70             EntityConverter o = (EntityConverter) other;
71             return deletedKeys.equals(o.deletedKeys) &&
72                    super.equals(other);
73         } else {
74             return false;
75         }
76     }
77
78     @Override JavaDoc
79     public int hashCode() {
80         return deletedKeys.hashCode() + super.hashCode();
81     }
82
83     @Override JavaDoc
84     public String JavaDoc toString() {
85         return "[EntityConverter " + super.toString() +
86                " DeletedKeys: " + deletedKeys + ']';
87     }
88 }
89
Popular Tags