Projekt

Obecné

Profil

Stáhnout (3.51 KB) Statistiky
| Větev: | Tag: | Revize:
1
package jdeserialize;
2

    
3
import java.util.*;
4

    
5
/**
6
 * Represents an instance of a non-enum, non-Class, non-ObjectStreamClass,
7
 * non-array class, including the non-transient field values, for all classes in
8
 * its hierarchy and inner classes.
9
 */
10
public class instance extends contentbase {
11
    /**
12
     * Collection of field data, organized by class description.
13
     */
14
    public Map<classdesc, Map<field, Object>> fielddata;
15

    
16
    /**
17
     * Class description for this instance.
18
     */
19
    public classdesc classdesc;
20

    
21
    /**
22
     * Constructor.
23
     */
24
    public instance() {
25
        super(contenttype.INSTANCE);
26
        this.fielddata = new HashMap<classdesc, Map<field, Object>>();
27
    }
28

    
29
    public @Override String toJson(String indentation)
30
    {
31
        StringBuffer sb = new StringBuffer();
32
        String val = "";
33

    
34
        /*if (classdesc.getType() == contenttype.CLASSDESC && !instance.indentedClasses.contains(classdesc.name)) {*/
35
            indentation += "\t";
36
           /* instance.indentedClasses.add(classdesc.name);
37
        }*/
38

    
39
        // ClassName
40
        sb.append("{\n").append(indentation).append("class ").append(classdesc.name);
41
        //System.out.println(sb.toString());
42
        // extends
43
        if (classdesc.superclass != null) {
44
            sb.append(" extends ").append(classdesc.superclass.name);
45
            //System.out.println(sb.toString());
46
        }
47
        // implements
48
        if (classdesc.interfaces != null) {
49
            sb.append(" implements ");
50
            for (String str : classdesc.interfaces) {
51
                sb.append(str);
52
            }
53
            //System.out.println(sb.toString());
54
        }
55
        sb.append(" : {"); // ending of first line
56
        //System.out.println(sb.toString());
57

    
58
        for (field f : classdesc.fields) {
59
            // v this.fielddata najit element, jehoz key == classdesc
60
            // v tomto prvku fielddata najdu value (element) podle key == f
61
            // jeho value je chtena hodnota
62
            
63
            var locVal = this.fielddata.get(classdesc).get(f);
64

    
65
            if(locVal instanceof content)
66
            {
67
                val = ((content)locVal).toJson(indentation);
68
            }
69
            else {
70
                val = locVal.toString();
71
            }
72

    
73
            sb.append("\n\t").append(indentation);
74
            sb.append("\"").append(f.name).append("\"");
75
            sb.append(" : ");
76
            sb.append(val);
77
            //System.out.println(sb.toString());
78

    
79
            if (!f.equals(classdesc.fields[classdesc.fields.length - 1])) {
80
                sb.append(", ");
81
                //System.out.println(sb.toString());
82
            }
83
        }
84

    
85
        sb.append("\n").append(indentation).append("}\n}");
86
        //System.out.println(sb.toString());
87

    
88
        /*if (classdesc.getType() == contenttype.CLASSDESC && instance.indentedClasses.contains(classdesc.name)) {*/
89
            indentation.replaceFirst("\t", "");
90
            /*instance.indentedClasses.remove(classdesc.name);
91
        }*/
92

    
93
        return sb.toString();
94
    }
95

    
96
    public String toString() {
97
        StringBuffer sb = new StringBuffer();
98
        sb.append(classdesc.name).append(' ').append("_h").append(jdeserialize.hex(handle))
99
            .append(" = r_").append(jdeserialize.hex(classdesc.handle)).append(";  ");
100
        //sb.append("// [instance " + jdeserialize.hex(handle) + ": " + jdeserialize.hex(classdesc.handle) + "/" + classdesc.name).append("]");
101
        return sb.toString();
102
    }
103

    
104
    /**
105
     * Object annotation data.
106
     */
107
    public Map<classdesc, List<content>> annotations;
108
}
(18-18/20)