source: java/main/src/main/java/com/framsticks/params/SimpleAbstractAccess.java @ 102

Last change on this file since 102 was 102, checked in by psniegowski, 11 years ago

HIGHLIGHTS:

for Joinables running

CHANGELOG:
Add WorkPackageLogic? and classes representing prime experiment state.

Add classes for PrimeExperiment? state.

Extract single netload routine in Simulator.

Working netload with dummy content in PrimeExperiment?.

More development with NetLoadSaveLogic? and PrimeExperiment?.

Improvement around prime.

Improve BufferedDispatcher?.isActive logic.

Add prime-all.xml configuration.

Manual connecting to existing simulators from GUI.

Guard in SimulatorConnector? against expdef mismatch.

Guard against empty target dispatcher in BufferedDispatcher?.

Make BufferedDispatcher? a Dispatcher (and Joinable).

Minor improvements.

Done StackedJoinable?, improve Experiment.

Develop StackedJoinable?.

Add StackedJoinable? utility joinables controller.

Add dependency on apache-commons-lang.

Add ready ListChange? on Simulators.

Improve hints in ListChange?.

Several improvements.

Found bug with dispatching in Experiment.

Minor improvements.

Fix bug with early finishing Server.

Many changes in Dispatching.

Fix bug with connection.

Do not obfuscate log with socket related exceptions.

Add SocketClosedException?.

Add SimulatorConnector?.

Work out conception of experiment composing of logics building blocks.

Rename SinkInterface? to Sink.

Move saving of Accesses into AccessOperations?.

Some improvements to Experiment.

Improve joinables.

Fix issue with joinables closing.

Add direct and managed consoles to popup menu.

File size: 3.0 KB
Line 
1package com.framsticks.params;
2
3
4
5
6import com.framsticks.params.types.ObjectParam;
7import com.framsticks.util.FramsticksException;
8
9/**
10 * The Class SimpleAbstractAccess implements all the methods of Access
11 * which actions can be implemented with usage of {@link Access} methods
12 * or concern schema, which is stored in {@link #framsClass}
13 *
14 * Based on c++ class SimpleAbstractParam located in: cpp/gdk/param.*
15 *
16 * @author Jarek Szymczak <name.surname@gmail.com>, Mateusz Jarus (please
17 *         replace name and surname with my personal data)
18 *
19 * @author Piotr Sniegowski
20 */
21public abstract class SimpleAbstractAccess implements ObjectAccess {
22
23        protected final FramsClass framsClass;
24
25        /**
26         * @param framsClass
27         */
28        public SimpleAbstractAccess(FramsClass framsClass) {
29                this.framsClass = framsClass;
30        }
31
32        @Override
33        public final FramsClass getFramsClass() {
34                return framsClass;
35        }
36
37        @Override
38        public String getId() {
39                return framsClass.getId();
40        }
41
42        @Override
43        public int getParamCount() {
44                return framsClass.getParamCount();
45        }
46
47        @Override
48        public Param getParam(int i) {
49                return framsClass.getParam(i);
50        }
51
52        @Override
53        public Param getParam(String id) {
54                return framsClass.getParam(id);
55        }
56
57        // @Override
58        // public Param getGroupMember(int gi, int n) {
59        //      return framsClass.getGroupMember(gi, n);
60        // }
61
62        @Override
63        public <T> T get(int i, Class<T> type) {
64                return get(framsClass.getParamEntry(i, ValueParam.class), type);
65        }
66
67        @Override
68        public <T> T get(String id, Class<T> type) {
69                return get(framsClass.getParamEntry(id, ValueParam.class), type);
70        }
71
72        @Override
73        public <T> int set(int i, T value) {
74                return set(framsClass.getParamEntry(i, ValueParam.class), value);
75        }
76
77        @Override
78        public <T> int set(String id, T value) {
79                return set(framsClass.getParamEntry(id, ValueParam.class), value);
80        }
81
82        @Override
83        public <T> int set(ValueParam param, T value) {
84
85                //String id = param.getEffectiveId();
86                try {
87                        Object oldValue = get(param, param.getStorageType());
88                        ReassignResult<?> result = param.reassign(value, oldValue);
89                        Object casted = result.getValue();
90                        if (casted != null && !casted.equals(oldValue)) {
91                                internalSet(param, casted);
92                        }
93                        return result.getFlags();
94                } catch (CastFailure e) {
95                        throw new FramsticksException()
96                                .msg("casting failure while set")
97                                .arg("param", param)
98                                .arg("value", value)
99                                .arg("value's type", (value == null ? "<null>" : value.getClass().getCanonicalName()))
100                                .arg("in", this).cause(e);
101                }
102        }
103
104
105        protected abstract <T> void internalSet(ValueParam param, T value);
106
107        @Override
108        public Iterable<Param> getParams() {
109                return framsClass.getParamEntries();
110        }
111
112        @Override
113        public int getCompositeParamCount() {
114                return framsClass.getCompositeParamCount();
115        }
116
117        @Override
118        public CompositeParam getCompositeParam(int number) {
119                return framsClass.getCompositeParam(number);
120        }
121
122        @Override
123        public ParamBuilder buildParam(ParamBuilder builder) {
124                return builder.name(getId()).type(ObjectParam.class).containedTypeName(getId());
125        }
126
127}
Note: See TracBrowser for help on using the repository browser.