KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > thoughtriver > open > vectorvisuals > persistence > PersistenceManager


1 /*
2  * PersistenceManager.java
3  *
4  * Created on Oct 25, 2005, 8:35:26 AM
5  */

6 package com.thoughtriver.open.vectorvisuals.persistence;
7
8 import java.awt.*;
9 import java.awt.geom.*;
10 import java.beans.*;
11 import java.io.*;
12
13 import com.thoughtriver.open.vectorvisuals.*;
14
15 /**
16  * The <CODE>PersistenceManager</CODE> enables <CODE>Encoder</CODE>s to
17  * persist the vector world by adding several custom <CODE>PersistenceDelegate</CODE>s
18  * to any <CODE>Encoder</CODE>. It also allows the addition of new <CODE>PersistenceDelegate</CODE>s
19  * through its API.
20  *
21  * @author Brandon Franklin
22  * @version $Date: 2006/11/25 09:08:28 $
23  */

24 public class PersistenceManager {
25
26     /** The singleton instance */
27     private static final PersistenceManager instance = new PersistenceManager();
28
29     /**
30      * Returns the singleton instance of <CODE>PersistenceManager</CODE>.
31      *
32      * @return the singleton instance of <CODE>PersistenceManager</CODE>
33      */

34     public static PersistenceManager getInstance() {
35         return instance;
36     }
37
38     /**
39      * Creates an instance of <CODE>PersistenceManager</CODE> and prepares it
40      * for use. This is protected to allow for subclasses.
41      */

42     protected PersistenceManager() {
43     }
44
45     /**
46      * Prepares the supplied <CODE>Encoder</CODE> to persist a vector world by
47      * adding several custom <CODE>PersistenceDelegate</CODE>s to it, as well
48      * as any that have been provided through the <CODE>PersistenceManager</CODE>'s
49      * API.
50      *
51      * @param encoder the <CODE>Encoder</CODE> to prepare
52      */

53     public void prepareEncoder(final Encoder encoder) {
54
55         PersistenceDelegate delegate = new AffineTransformPersistenceDelegate();
56         encoder.setPersistenceDelegate(AffineTransform.class, delegate);
57
58         delegate = new AreaPersistenceDelegate();
59         encoder.setPersistenceDelegate(Area.class, delegate);
60
61         delegate = new PolygonPersistenceDelegate();
62         encoder.setPersistenceDelegate(Polygon.class, delegate);
63
64         delegate = new LinePersistenceDelegate();
65         encoder.setPersistenceDelegate(Line2D.Double.class, delegate);
66         encoder.setPersistenceDelegate(Line2D.Float.class, delegate);
67
68         delegate = new QuadCurvePersistenceDelegate();
69         encoder.setPersistenceDelegate(QuadCurve2D.Double.class, delegate);
70         encoder.setPersistenceDelegate(QuadCurve2D.Float.class, delegate);
71
72         delegate = new CubicCurvePersistenceDelegate();
73         encoder.setPersistenceDelegate(CubicCurve2D.Double.class, delegate);
74         encoder.setPersistenceDelegate(CubicCurve2D.Float.class, delegate);
75
76         delegate = new RectangularShapePersistenceDelegate();
77         encoder.setPersistenceDelegate(Rectangle2D.Double.class, delegate);
78         encoder.setPersistenceDelegate(Rectangle2D.Float.class, delegate);
79         encoder.setPersistenceDelegate(Arc2D.Double.class, delegate);
80         encoder.setPersistenceDelegate(Arc2D.Float.class, delegate);
81         encoder.setPersistenceDelegate(Ellipse2D.Double.class, delegate);
82         encoder.setPersistenceDelegate(Ellipse2D.Float.class, delegate);
83
84         delegate = new RoundRectanglePersistenceDelegate();
85         encoder.setPersistenceDelegate(RoundRectangle2D.Double.class, delegate);
86         encoder.setPersistenceDelegate(RoundRectangle2D.Float.class, delegate);
87
88         delegate = new BrushPersistenceDelegate();
89         encoder.setPersistenceDelegate(Brush.class, delegate);
90
91         delegate = new ColorPersistenceDelegate();
92         encoder.setPersistenceDelegate(Color.class, delegate);
93
94         delegate = new GradientPaintPersistenceDelegate();
95         encoder.setPersistenceDelegate(GradientPaint.class, delegate);
96
97         delegate = new TexturePaintPersistenceDelegate();
98         encoder.setPersistenceDelegate(TexturePaint.class, delegate);
99
100         delegate = new AlphaCompositePersistenceDelegate();
101         encoder.setPersistenceDelegate(AlphaComposite.class, delegate);
102
103         delegate = new BasicStrokePersistenceDelegate();
104         encoder.setPersistenceDelegate(BasicStroke.class, delegate);
105
106         delegate = new VisualObjectPersistenceDelegate();
107         encoder.setPersistenceDelegate(VisualObject.class, delegate);
108
109         delegate = new VisualContainerObjectPersistenceDelegate();
110         encoder.setPersistenceDelegate(VisualContainerObject.class, delegate);
111
112         delegate = new VisualTextObjectPersistenceDelegate();
113         encoder.setPersistenceDelegate(VisualTextObject.class, delegate);
114
115         delegate = new VisualImageObjectPersistenceDelegate();
116         encoder.setPersistenceDelegate(VisualImageObject.class, delegate);
117
118         delegate = new VVDisplayPersistenceDelegate();
119         encoder.setPersistenceDelegate(VVDisplay.class, delegate);
120     }
121
122     /**
123      * Uses the supplied <CODE>OutputStream</CODE> to encode the specified
124      * <CODE>Object</CODE> tree into XML.
125      *
126      * @param out the <CODE>OutputStream</CODE> to write the output to
127      * @param object the <CODE>Object</CODE> that is the root of the tree to
128      * encode
129      */

130     public void encode(final OutputStream out, final Object JavaDoc object) {
131         XMLEncoder encoder = new XMLEncoder(out);
132         prepareEncoder(encoder);
133         encoder.writeObject(object);
134         encoder.close();
135     }
136
137 }
138
Popular Tags