Statistics
| Revision:

root / trunk / libraries / libDwg / src / com / iver / cit / jdwglib / dwg / readers / DwgObjectReaderPool.java @ 10588

History | View | Annotate | Download (15.2 KB)

1
/*
2
 * Created on 09-ene-2007
3
 *
4
 * gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
5
 *
6
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
7
 *
8
 * This program is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU General Public License
10
 * as published by the Free Software Foundation; either version 2
11
 * of the License, or (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 * GNU General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU General Public License
19
 * along with this program; if not, write to the Free Software
20
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
21
 *
22
 * For more information, contact:
23
 *
24
 *  Generalitat Valenciana
25
 *   Conselleria d'Infraestructures i Transport
26
 *   Av. Blasco Ib??ez, 50
27
 *   46010 VALENCIA
28
 *   SPAIN
29
 *
30
 *      +34 963862235
31
 *   gvsig@gva.es
32
 *      www.gvsig.gva.es
33
 *
34
 *    or
35
 *
36
 *   IVER T.I. S.A
37
 *   Salamanca 50
38
 *   46005 Valencia
39
 *   Spain
40
 *
41
 *   +34 963163400
42
 *   dac@iver.es
43
 */
44
package com.iver.cit.jdwglib.dwg.readers;
45

    
46
import java.util.HashMap;
47
import java.util.Map;
48
import com.iver.cit.jdwglib.dwg.DwgObject;
49
import com.iver.cit.jdwglib.dwg.objects.DwgArc;
50
import com.iver.cit.jdwglib.dwg.objects.DwgAttdef;
51
import com.iver.cit.jdwglib.dwg.objects.DwgAttrib;
52
import com.iver.cit.jdwglib.dwg.objects.DwgBlock;
53
import com.iver.cit.jdwglib.dwg.objects.DwgBlockControl;
54
import com.iver.cit.jdwglib.dwg.objects.DwgBlockHeader;
55
import com.iver.cit.jdwglib.dwg.objects.DwgCircle;
56
import com.iver.cit.jdwglib.dwg.objects.DwgDictionary;
57
import com.iver.cit.jdwglib.dwg.objects.DwgDictionaryVar;
58
import com.iver.cit.jdwglib.dwg.objects.DwgDimOrd;
59
import com.iver.cit.jdwglib.dwg.objects.DwgEllipse;
60
import com.iver.cit.jdwglib.dwg.objects.DwgEndblk;
61
import com.iver.cit.jdwglib.dwg.objects.DwgFace3D;
62
import com.iver.cit.jdwglib.dwg.objects.DwgHatch;
63
import com.iver.cit.jdwglib.dwg.objects.DwgIdBuffer;
64
import com.iver.cit.jdwglib.dwg.objects.DwgImage;
65
import com.iver.cit.jdwglib.dwg.objects.DwgImageDef;
66
import com.iver.cit.jdwglib.dwg.objects.DwgImageDefReactor;
67
import com.iver.cit.jdwglib.dwg.objects.DwgInsert;
68
import com.iver.cit.jdwglib.dwg.objects.DwgLayer;
69
import com.iver.cit.jdwglib.dwg.objects.DwgLayerControl;
70
import com.iver.cit.jdwglib.dwg.objects.DwgLayerIndex;
71
import com.iver.cit.jdwglib.dwg.objects.DwgLine;
72
import com.iver.cit.jdwglib.dwg.objects.DwgLinearDimension;
73
import com.iver.cit.jdwglib.dwg.objects.DwgLwPolyline;
74
import com.iver.cit.jdwglib.dwg.objects.DwgMText;
75
import com.iver.cit.jdwglib.dwg.objects.DwgMeshPolyline;
76
import com.iver.cit.jdwglib.dwg.objects.DwgMinsert;
77
import com.iver.cit.jdwglib.dwg.objects.DwgOle2Frame;
78
import com.iver.cit.jdwglib.dwg.objects.DwgPFacePolyline;
79
import com.iver.cit.jdwglib.dwg.objects.DwgPoint;
80
import com.iver.cit.jdwglib.dwg.objects.DwgPolyline2D;
81
import com.iver.cit.jdwglib.dwg.objects.DwgPolyline3D;
82
import com.iver.cit.jdwglib.dwg.objects.DwgRasterVariables;
83
import com.iver.cit.jdwglib.dwg.objects.DwgSeqend;
84
import com.iver.cit.jdwglib.dwg.objects.DwgSolid;
85
import com.iver.cit.jdwglib.dwg.objects.DwgSortEntStable;
86
import com.iver.cit.jdwglib.dwg.objects.DwgSpline;
87
import com.iver.cit.jdwglib.dwg.objects.DwgText;
88
import com.iver.cit.jdwglib.dwg.objects.DwgVertex2D;
89
import com.iver.cit.jdwglib.dwg.objects.DwgVertex3D;
90
import com.iver.cit.jdwglib.dwg.objects.DwgVertexMesh;
91
import com.iver.cit.jdwglib.dwg.objects.DwgVertexPFace;
92
import com.iver.cit.jdwglib.dwg.objects.DwgVertexPFaceFace;
93
import com.iver.cit.jdwglib.dwg.objects.DwgXRecord;
94
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgArcReader1314;
95
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgAttdefReader1314;
96
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgAttribReader1314;
97
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgBlockControlReader1314;
98
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgBlockHeaderReader1314;
99
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgBlockReader1314;
100
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgCircleReader1314;
101
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgDictionaryReader1314;
102
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgDictionaryVarReader1314;
103
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgDimOrdReader1314;
104
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgEllipseReader1314;
105
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgEndBlkReader1314;
106
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgFace3DReader1314;
107
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgHatchReader1314;
108
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgIdBufferReader1314;
109
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgImageDefReactor1314;
110
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgImageDefReader1314;
111
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgImageReader1314;
112
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgInsertReader1314;
113
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgLayerControlReader1314;
114
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgLayerIndexReader1314;
115
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgLayerReader1314;
116
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgLineReader1314;
117
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgLinearDimensionReader1314;
118
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgLwPolylineReader1314;
119
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgMTextReader1314;
120
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgMeshReader1314;
121
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgMinsertReader1314;
122
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgOle2FrameReader1314;
123
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgPFaceReader1314;
124
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgPointReader1314;
125
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgPolyline2DReader1314;
126
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgPolyline3DReader1314;
127
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgRasterVariablesReader1314;
128
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgSeqEndReader1314;
129
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgSolidReader1314;
130
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgSortEntsTableReader1314;
131
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgSplineReader1314;
132
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgTextReader1314;
133
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgVertex2DReader1314;
134
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgVertex3DReader1314;
135
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgVertexMeshReader1314;
136
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgVertexPFaceFaceReader1314;
137
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgVertexPFaceReader1314;
138
import com.iver.cit.jdwglib.dwg.readers.objreaders.v1314.DwgXrecordReader1314;
139
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgArcReader15;
140
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgAttdefReader15;
141
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgAttribReader15;
142
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgBlockControlReader15;
143
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgBlockHeaderReader15;
144
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgBlockReader15;
145
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgCircleReader15;
146
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgDictionaryReader15;
147
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgEllipseReader15;
148
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgEndBlkReader15;
149
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgInsertReader15;
150
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgLayerControlReader15;
151
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgLayerReader15;
152
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgLineReader15;
153
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgLinearDimensionReader15;
154
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgLwPolylineReader15;
155
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgMTextReader15;
156
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgPointReader15;
157
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgPolyline2DReader15;
158
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgPolyline3DReader15;
159
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgSeqEndReader15;
160
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgSolidReader15;
161
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgSplineReader15;
162
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgTextReader15;
163
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgVertex2DReader15;
164
import com.iver.cit.jdwglib.dwg.readers.objreaders.v15.DwgVertex3DReader15;
165

    
166
/**
167
 * @author azabala
168
 */
169
public class DwgObjectReaderPool {
170
        
171
        private static final DwgObjectReaderPool _instance = 
172
                new DwgObjectReaderPool();
173
        
174
        private Map obj_readers;
175
        
176
        static{
177
                //READERS FOR DWG V15
178
                _instance.put(DwgArc.class, "15", new DwgArcReader15());
179
                _instance.put(DwgAttdef.class, "15", new DwgAttdefReader15());
180
                _instance.put(DwgAttrib.class, "15", new DwgAttribReader15());
181
                _instance.put(DwgBlock.class, "15", new DwgBlockReader15());
182
                _instance.put(DwgBlockControl.class, "15", new DwgBlockControlReader15());
183
                _instance.put(DwgBlockHeader.class, "15", new DwgBlockHeaderReader15());
184
                _instance.put(DwgCircle.class, "15", new DwgCircleReader15());
185
                _instance.put(DwgEllipse.class, "15", new DwgEllipseReader15());
186
                _instance.put(DwgEndblk.class, "15", new DwgEndBlkReader15());
187
                _instance.put(DwgInsert.class, "15", new DwgInsertReader15());
188
                _instance.put(DwgLayer.class, "15", new DwgLayerReader15());
189
                _instance.put(DwgLayerControl.class, "15", new DwgLayerControlReader15());
190
                _instance.put(DwgLine.class, "15", new DwgLineReader15());
191
                _instance.put(DwgLinearDimension.class, "15", new DwgLinearDimensionReader15());
192
                _instance.put(DwgLwPolyline.class, "15", new DwgLwPolylineReader15());
193
                _instance.put(DwgMText.class, "15", new DwgMTextReader15());
194
                _instance.put(DwgPoint.class, "15", new DwgPointReader15());
195
                _instance.put(DwgPolyline2D.class, "15", new DwgPolyline2DReader15());
196
                _instance.put(DwgPolyline3D.class, "15", new DwgPolyline3DReader15());
197
                _instance.put(DwgSeqend.class, "15", new DwgSeqEndReader15());
198
                _instance.put(DwgSolid.class, "15", new DwgSolidReader15());
199
                _instance.put(DwgSpline.class, "15", new DwgSplineReader15());
200
                _instance.put(DwgText.class, "15", new DwgTextReader15());
201
                _instance.put(DwgVertex2D.class, "15", new DwgVertex2DReader15());
202
                _instance.put(DwgVertex3D.class, "15", new DwgVertex3DReader15());
203
                _instance.put(DwgDictionary.class, "15", new DwgDictionaryReader15());
204
                
205
                
206
                //READERS FOR DWG V13 AND V14
207
                _instance.put(DwgArc.class, "1314", new DwgArcReader1314());
208
                _instance.put(DwgAttdef.class, "1314", new DwgAttdefReader1314());
209
                _instance.put(DwgAttrib.class, "1314", new DwgAttribReader1314());
210
                _instance.put(DwgBlock.class, "1314", new DwgBlockReader1314());
211
                _instance.put(DwgBlockControl.class, "1314", new DwgBlockControlReader1314());
212
                _instance.put(DwgBlockHeader.class, "1314", new DwgBlockHeaderReader1314());
213
                _instance.put(DwgCircle.class, "1314", new DwgCircleReader1314());
214
                _instance.put(DwgDictionary.class, "1314", new DwgDictionaryReader1314());
215
                _instance.put(DwgDictionaryVar.class, "1314", new DwgDictionaryVarReader1314());
216
                _instance.put(DwgDimOrd.class, "1314", new DwgDimOrdReader1314());
217
                _instance.put(DwgEllipse.class, "1314", new DwgEllipseReader1314());
218
                _instance.put(DwgEndblk.class, "1314", new DwgEndBlkReader1314());
219
                _instance.put(DwgFace3D.class, "1314", new DwgFace3DReader1314());
220
                _instance.put(DwgHatch.class, "1314", new DwgHatchReader1314());
221
                _instance.put(DwgIdBuffer.class, "1314", new DwgIdBufferReader1314());
222
                _instance.put(DwgImageDefReactor.class, "1314", new DwgImageDefReactor1314());
223
                _instance.put(DwgImageDef.class, "1314", new DwgImageDefReader1314());
224
                _instance.put(DwgImage.class, "1314", new DwgImageReader1314());
225
                _instance.put(DwgInsert.class, "1314", new DwgInsertReader1314());
226
                _instance.put(DwgLayer.class, "1314", new DwgLayerReader1314());
227
                _instance.put(DwgLayerControl.class, "1314", new DwgLayerControlReader1314());
228
                _instance.put(DwgLayerIndex.class, "1314", new DwgLayerIndexReader1314());
229
                _instance.put(DwgLine.class, "1314", new DwgLineReader1314());
230
                _instance.put(DwgLinearDimension.class, "1314", new DwgLinearDimensionReader1314());
231
                _instance.put(DwgLwPolyline.class, "1314", new DwgLwPolylineReader1314());
232
                _instance.put(DwgMeshPolyline.class, "1314", new DwgMeshReader1314());
233
                _instance.put(DwgMinsert.class, "1314", new DwgMinsertReader1314());
234
                _instance.put(DwgMText.class, "1314", new DwgMTextReader1314());
235
                _instance.put(DwgOle2Frame.class, "1314", new DwgOle2FrameReader1314());
236
                _instance.put(DwgPFacePolyline.class, "1314", new DwgPFaceReader1314());
237
                _instance.put(DwgPoint.class, "1314", new DwgPointReader1314());
238
                _instance.put(DwgPolyline2D.class, "1314", new DwgPolyline2DReader1314());
239
                _instance.put(DwgPolyline3D.class, "1314", new DwgPolyline3DReader1314());
240
                _instance.put(DwgRasterVariables.class, "1314", new DwgRasterVariablesReader1314());
241
                _instance.put(DwgSeqend.class, "1314", new DwgSeqEndReader1314());
242
                _instance.put(DwgSortEntStable.class, "1314", new DwgSortEntsTableReader1314());
243
                _instance.put(DwgSolid.class, "1314", new DwgSolidReader1314());
244
                _instance.put(DwgSpline.class, "1314", new DwgSplineReader1314());
245
                _instance.put(DwgText.class, "1314", new DwgTextReader1314());
246
                _instance.put(DwgVertex2D.class, "1314", new DwgVertex2DReader1314());
247
                _instance.put(DwgVertex3D.class, "1314", new DwgVertex3DReader1314());
248
                _instance.put(DwgXRecord.class, "1314", new DwgXrecordReader1314());
249
                _instance.put(DwgDictionary.class, "1314", new DwgDictionaryReader1314());
250
                _instance.put(DwgVertexPFace.class, "1314", new DwgVertexPFaceReader1314());
251
                _instance.put(DwgVertexPFaceFace.class, "1314", new DwgVertexPFaceFaceReader1314());
252
                _instance.put(DwgVertexMesh.class, "1314", new DwgVertexMeshReader1314());
253
        
254
        }
255
        
256
        
257
        
258
        public final static DwgObjectReaderPool getInstance(){
259
                return _instance;
260
        }
261
        private DwgObjectReaderPool(){
262
                obj_readers = new HashMap();
263
        }
264
        
265
        public IDwgObjectReader get(DwgObject obj, String dwgVersion){
266
                IDwgObjectReader reader = (IDwgObjectReader) obj_readers.
267
                                get(obj.getClass().getName() + dwgVersion);
268
                if(reader == null)
269
                        throw new RuntimeException("No se encuentra la clsae para leer "+obj.getClass().getName());
270
                return reader;
271
                
272
        }
273
        
274
        public void put(Class dwgObjClass, String dwgVersion, IDwgObjectReader reader){
275
                if(DwgObject.class.isAssignableFrom(dwgObjClass))
276
                        obj_readers.put(dwgObjClass.getName()+ dwgVersion, reader);
277
                else
278
                        throw new RuntimeException("Este pool solo admite como entrada clases de entidad de dibujo gr?fica");
279
        }
280
        
281
}