Statistics
| Revision:

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

History | View | Annotate | Download (2.38 KB)

1
package org.gvsig.dwg.lib.readers.v15;
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 DwgDictionaryReader15 extends AbstractDwg15Reader{
12

    
13
        public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) {
14
                // TODO Auto-generated method stub
15
                if(! (dwgObj instanceof DwgDictionary))
16
                        throw new RuntimeException("DictionaryReader15 solo puede leer DwgDictionary");
17
                DwgDictionary dict = (DwgDictionary) dwgObj;
18
                try {
19
                        //System.out.println("LEYENDO UN DICCIONARIO");
20
                        int bitPos = offset;
21
                        ArrayList v = DwgUtil.getBitShort(data, bitPos);
22
                        bitPos = ((Integer)v.get(0)).intValue();
23
                        int numReactors = ((Integer)v.get(1)).intValue();
24
                        dict.setNumReactors(numReactors);
25
                        //System.out.println("numReactors="+numReactors);
26
                        
27
                        v = DwgUtil.getBitLong(data, bitPos);
28
                        bitPos = ((Integer)v.get(0)).intValue();
29
                        int numItems = ((Integer)v.get(1)).intValue();
30
                        //System.out.println("numItems="+numItems);
31
                        
32
                        
33
                        v = DwgUtil.getBitShort(data, bitPos);
34
                        bitPos = ((Integer)v.get(0)).intValue();
35
                        int cloningFlag = ((Integer)v.get(1)).intValue();
36
                        dict.setCloningFlag(cloningFlag);
37
                        //System.out.println("cloningFlag="+cloningFlag);
38
                        
39
                        v = DwgUtil.getRawChar(data, bitPos);
40
                        bitPos = ((Integer)v.get(0)).intValue();
41
                        int hardOwnerFlag = ((Integer)v.get(1)).intValue();
42
                        dict.setHardOwnerFlag(hardOwnerFlag);
43
                        //System.out.println("hardOwnerFlag="+hardOwnerFlag);
44
                        
45
                        int handleCode;
46
                        int handleOffset;
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
                                //System.out.println("ENTRADA DE DICCIONARIO text= "+entradasTexto.get(i)+" handleCode ="+handle.getCode()+" handleOffset ="+handle.getOffset());
59
                                // A la vez que leemos los handles, rellenamos el diccionario.
60
                                dict.put(entradasTexto.get(i),handle);
61
                        }
62
                        //System.out.println("map.size ="+dict.size());
63
                }catch (Exception e){
64
                        System.out.println("Se ha producido una excepion leyendo un diccionario."+e.getMessage());
65
                }
66
        }
67
}