Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libDwg / src / org / gvsig / dwg / lib / readers / v2004 / DwgDictionaryReader2004.java @ 28969

History | View | Annotate | Download (2.01 KB)

1
package org.gvsig.dwg.lib.readers.v2004;
2

    
3
import java.util.ArrayList;
4

    
5
import org.gvsig.dwg.lib.DwgHandleReference;
6
import org.gvsig.dwg.lib.DwgObject;
7
import org.gvsig.dwg.lib.DwgUtil;
8
import org.gvsig.dwg.lib.objects.DwgDictionary;
9

    
10

    
11
public class DwgDictionaryReader2004 extends AbstractDwg2004Reader{
12

    
13
        public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) {
14
                if(! (dwgObj instanceof DwgDictionary))
15
                        throw new RuntimeException("DictionaryReader2004 solo puede leer DwgDictionary");
16
                DwgDictionary dict = (DwgDictionary) dwgObj;
17
                try {
18
                        int bitPos = offset;
19

    
20
                        ArrayList v;
21

    
22
                        v = DwgUtil.getBitShort(data, bitPos);
23
                        bitPos = ((Integer)v.get(0)).intValue();
24
                        int numReactors = ((Integer)v.get(1)).intValue();
25
                        dict.setNumReactors(numReactors);
26

    
27
                        v = DwgUtil.testBit(data, bitPos);
28
                        bitPos = ((Integer)v.get(0)).intValue();
29
                        boolean XdicFlag = ((Boolean) v.get(1)).booleanValue();
30

    
31
                        v = DwgUtil.getBitLong(data, bitPos);
32
                        bitPos = ((Integer)v.get(0)).intValue();
33
                        int numItems = ((Integer)v.get(1)).intValue();
34

    
35
                        v = DwgUtil.getBitShort(data, bitPos);
36
                        bitPos = ((Integer)v.get(0)).intValue();
37
                        int cloningFlag = ((Integer)v.get(1)).intValue();
38
                        dict.setCloningFlag(cloningFlag);
39

    
40
                        v = DwgUtil.getRawChar(data, bitPos);
41
                        bitPos = ((Integer)v.get(0)).intValue();
42
                        int hardOwnerFlag = ((Integer)v.get(1)).intValue();
43
                        dict.setHardOwnerFlag(hardOwnerFlag);
44

    
45
                        dict.inserta();
46

    
47
                        ArrayList entradasTexto = new ArrayList();
48
                        for(int i=0; i<numItems; i++){
49
                                v = DwgUtil.getTextString(data, bitPos);
50
                                bitPos = ((Integer)v.get(0)).intValue();
51
                                String text = ((String)v.get(1));
52
                                entradasTexto.add(text);
53
                        }
54
                        DwgHandleReference handle;
55
                        for(int i=0; i<numItems; i++){
56
                                handle = new DwgHandleReference();
57
                                bitPos = handle.read(data, bitPos);
58
                                // A la vez que leemos los handles, rellenamos el diccionario.
59
                                dict.put(entradasTexto.get(i),handle);
60
                        }
61
                }catch (Exception e){
62
                        System.out.println("Se ha producido una excepion leyendo un diccionario."+e.getMessage());
63
                }
64
        }
65
}