Statistics
| Revision:

gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / dynform / src / org / gvsig / tools / dynform / impl / DefaultDynFormManager.java @ 846

History | View | Annotate | Download (5.92 KB)

1
package org.gvsig.tools.dynform.impl;
2

    
3
import java.util.HashMap;
4
import java.util.List;
5
import java.util.Map;
6

    
7
import org.gvsig.tools.ToolsLocator;
8
import org.gvsig.tools.dataTypes.DataType;
9
import org.gvsig.tools.dataTypes.DataTypes;
10
import org.gvsig.tools.dispose.DisposableIterator;
11
import org.gvsig.tools.dynform.api.DynFormDefinition;
12
import org.gvsig.tools.dynform.api.DynFormFieldDefinition;
13
import org.gvsig.tools.dynform.api.DynFormManager;
14
import org.gvsig.tools.dynform.api.JDynForm;
15
import org.gvsig.tools.dynform.api.JDynFormField;
16
import org.gvsig.tools.dynform.api.JDynFormSet;
17
import org.gvsig.tools.dynobject.DynField;
18
import org.gvsig.tools.dynobject.DynObject;
19
import org.gvsig.tools.dynobject.DynObjectSet;
20
import org.gvsig.tools.dynobject.DynStruct;
21
import org.gvsig.tools.service.Service;
22
import org.gvsig.tools.service.ServiceException;
23
import org.gvsig.tools.service.spi.AbstractServiceManager;
24
import org.gvsig.tools.service.spi.NotRegisteredException;
25

    
26
@SuppressWarnings({ "unchecked", "rawtypes"})
27
public class DefaultDynFormManager extends AbstractServiceManager implements DynFormManager {
28

    
29
        private Map definitions = null;
30
        
31
        public DefaultDynFormManager() {
32
        }
33

    
34
        public Map getDefinitions() {
35
                if( this.definitions==null ) {
36
                        this.definitions = new HashMap();        
37
                }
38
                return this.definitions;
39
        }
40
        
41
        protected String getRegistryKey() {
42
                return "DefaultDynFormManager";
43
        }
44

    
45
        protected String getRegistryDescription() {
46
                return "Dynamics forms default manager";
47
        }
48

    
49
    public String makeServiceName(DataType dataType, String subtype) {
50
            if( subtype==null || subtype.trim().length()==0 ) {
51
                    return DefaultDynFormManager.SERVICE_NAME_PREFIX + dataType.getName(); 
52
            }
53
                return DefaultDynFormManager.SERVICE_NAME_PREFIX + 
54
                                dataType.getName() + "." +
55
                                subtype.trim().toLowerCase();
56
    }
57
    
58
    public String makeServiceName(int dataType, String subtype) {
59
            if( dataType == DataTypes.UNKNOWN ) {
60
                    return DefaultDynFormManager.SERVICE_NAME_PREFIX + "unknown"; 
61
            }
62
            return makeServiceName(ToolsLocator.getDataTypesManager().get(dataType), subtype);
63
    }
64
    
65
    public JDynFormField createJDynFormField(DynFormFieldDefinition definition,Object value) throws ServiceException  {
66
            JDynFormField formfield = null;
67
            String serviceName = makeServiceName(definition.getDataType(), definition.getSubtype()); 
68
            DynObject params = null;
69
            try {
70
                        params = this.createServiceParameters(serviceName);
71
                } catch (NotRegisteredException e) {
72
                        if( definition.getSubtype()==null ) {
73
                            serviceName = makeServiceName(DataTypes.UNKNOWN, null);
74
                            params = this.createServiceParameters(serviceName);
75
                        } else {
76
                                serviceName = makeServiceName(definition.getDataType(), null);
77
                                try {
78
                                        params = this.createServiceParameters(serviceName);
79
                                } catch (NotRegisteredException ex) {
80
                                    serviceName = makeServiceName(DataTypes.UNKNOWN, null);
81
                                    params = this.createServiceParameters(serviceName);
82
                                }
83
                        }
84
                }
85
            params.setDynValue(FIELD_FIELDDEFINITION, definition);
86
            params.setDynValue(FIELD_VALUE, value);
87
            formfield = (JDynFormField) this.createService(params);
88
            return formfield;
89
    }
90

    
91
        
92
        public Service getService(DynObject parameters) throws ServiceException {
93
                JDynFormField  formfield = (JDynFormField) this.createService(parameters);
94
            return formfield;
95
        }
96

    
97

    
98
        public DynFormDefinition getDefinition(String name) {
99
                DefaultDynFormDefinition x = null;
100
                x = (DefaultDynFormDefinition) this.getDefinitions().get(name);
101
                if( x==null ) {
102
                        x =  new DefaultDynFormDefinition(name, this);
103
                        this.getDefinitions().put(x.getName(), x);
104
                }
105
                return x;
106
        }
107
        
108
        public DynFormDefinition getDefinition(DynStruct definition) {
109
                String name = definition.getName();
110
                DefaultDynFormDefinition x = null;
111
                x = (DefaultDynFormDefinition) this.getDefinitions().get(name);
112
                if( x==null ) {
113
                        x =  new DefaultDynFormDefinition(name, this);
114
                        this.getDefinitions().put(x.getName(), x);
115
                        DynField[] fields = definition.getDynFields();
116
                        for( int i=0; i<fields.length; i++ ) {
117
                                x.add(fields[i]);
118
                        }
119
                }
120
                return x;
121
        }
122

    
123
        public DynFormDefinition getDefinition(DynObject obj) {
124
                return this.getDefinition(obj.getDynClass());
125
        }
126

    
127
        public JDynForm createJDynForm(DynFormDefinition definition) throws ServiceException {
128
                JDynForm x = new DefaultJDynForm(this, definition);
129
                return x;
130
        }
131

    
132
        public JDynForm createJDynForm(DynStruct struct) throws ServiceException {
133
                DynFormDefinition definition = this.getDefinition(struct);
134
                JDynForm x = new DefaultJDynForm(this, definition);
135
                return x;
136
        }
137

    
138
        public JDynForm createJDynForm(DynObject obj) throws ServiceException {
139
                DynFormDefinition definition = this.getDefinition(obj);
140
                JDynForm x = new DefaultJDynForm(this, definition);
141
                x.setValues(obj);
142
                return x;
143
        }
144

    
145
        public JDynFormSet createJDynFormSet(DynFormDefinition definition)
146
                        throws ServiceException {
147
                JDynFormSet x = new DefaultJDynFormSet(this, definition);
148
                return x;
149
        }
150

    
151
        public JDynFormSet createJDynFormSet(DynStruct struct) throws ServiceException {
152
                DynFormDefinition definition = this.getDefinition(struct);
153
                JDynFormSet x = new DefaultJDynFormSet(this, definition);
154
                return x;
155
        }
156
        
157
        public JDynFormSet createJDynFormSet(DynObjectSet data)
158
                        throws ServiceException {
159
                DynObject obj = null;
160
                try {
161
                        if( data.getSize() < 1 ) {
162
                                throw new IllegalArgumentException("The DynObjectSet not has elements.");
163
                        }
164
                        DisposableIterator it = data.iterator();
165
                        obj = (DynObject) it.next();
166
                        
167
                } catch (Exception e) {
168
                        throw new RuntimeException(e.getLocalizedMessage(), e);
169
                }
170
                JDynFormSet form = this.createJDynFormSet(obj.getDynClass());
171
                form.setValues(data);
172
                return form;
173
        }
174

    
175
        public JDynFormSet createJDynFormSet(List data)
176
                        throws ServiceException {
177
                if( data.size() < 1 ) {
178
                        throw new IllegalArgumentException("The DynObjectSet not has elements.");
179
                }
180
                DynObject obj = (DynObject) data.get(0);
181
                JDynFormSet form = this.createJDynFormSet(obj.getDynClass());
182
                form.setValues(data);
183
                return form;
184
        }
185
}