00001 package ;
00002
00003
00011
00012
00013 import config.*;
00014
00015
00016
00017
00018 import .Rod;
00019 import .Rod_Helper;
00020 import .Tim;
00021 import .Tim_Helper;
00022
00023
00024 class Crate_Impl implements Crate {
00025
00026
00027
00028 private config.Configuration p_db;
00029 private config.ConfigObject p_obj;
00030 private boolean p_was_read;
00031 private boolean p_is_valid;
00032 private String p_uid;
00033 private String p_class_name;
00034
00035
00036
00037
00038 private short m_id;
00039
00040
00041
00042
00043 private Tim m_tim;
00044 private Rod[] m_rods;
00045
00046
00047
00048
00049
00050 public Crate_Impl() {
00051 p_is_valid = false;
00052 }
00053
00054 public Crate_Impl(config.Configuration db, config.ConfigObject obj) {
00055 init_config_params(db, obj);
00056 }
00057
00058 public void init_config_params(config.Configuration db, config.ConfigObject obj) {
00059 p_db = db;
00060 p_obj = obj;
00061 p_was_read = false;
00062 p_is_valid = true;
00063 p_uid = p_obj.UID();
00064 p_class_name = p_obj.class_name();
00065 }
00066
00067 public String UID() {
00068 return p_uid;
00069 }
00070
00071 public String class_name() {
00072 return p_class_name;
00073 }
00074
00075 public void update(boolean set_non_valid) {
00076 if(set_non_valid == true) {
00077 p_is_valid = false;
00078 }
00079 else {
00080 p_was_read = false;
00081 p_obj.clean();
00082 init();
00083 }
00084 }
00085
00086 public void unread() {
00087 p_was_read = false;
00088 }
00089
00090 public boolean is_valid() {
00091 return p_is_valid;
00092 }
00093
00094
00095
00096 private void init() throws config.NotFoundException, config.NotValidException, config.SystemException {
00097 if(p_was_read == true) {return;}
00098
00099 if(p_is_valid == false) {
00100 String text = "ERROR [.Crate_Impl.init()]: object " + p_uid + "@" + p_class_name + " is not valid";
00101 System.err.println(text);
00102 throw new config.NotValidException(text);
00103 }
00104
00105 m_id = p_obj.get_short("id");
00106
00107 m_tim = Tim_Helper.get(p_db, p_obj.get_object("tim"));
00108
00109 {
00110 ConfigObject[] objs = p_obj.get_objects("rods");
00111 m_rods = new Rod[objs.length];
00112 for( int i = 0; i < objs.length; i++ ) {
00113 m_rods[i] = Rod_Helper.get(p_db, objs[i]);
00114 }
00115 }
00116
00117
00118 p_was_read = true;
00119
00120 }
00121
00122 public short get_id() {
00123 if(p_was_read == false) {init();}
00124 return m_id;
00125 }
00126
00127 public void set_id(short value) {
00128 p_obj.clean();
00129 p_obj.set_short("id", value);
00130 }
00131
00132 public Tim get_tim() {
00133 if(p_was_read == false) {init();}
00134 return m_tim;
00135 }
00136
00137 public void set_tim(Tim value) {
00138 p_obj.clean();
00139 p_obj.set_object("tim", value.config_object());
00140 }
00141
00142 public Rod[] get_rods() {
00143 if(p_was_read == false) {init();}
00144 return m_rods;
00145 }
00146
00147 public void set_rods(Rod[] value) {
00148 p_obj.clean();
00149 config.ConfigObject[] objs = new config.ConfigObject[value.length];
00150 for(int i = 0; i < value.length; i++) {
00151 objs[i] = value[i].config_object();
00152 }
00153 p_obj.set_objects("rods", objs);
00154 }
00155
00156 public config.ConfigObject config_object() {
00157 return p_obj;
00158 }
00159
00160 public void print(String dx) {
00161 System.out.println(dx + "Crate object:" );
00162 System.out.println(dx + " id: \'" + UID() + "\', class name: \'" + class_name() + "\'");
00163
00164
00165
00166
00167 System.out.println(dx + " id: " + get_id());
00168
00169
00170
00171
00172 System.out.print(dx + " tim : ");
00173 if(get_tim() == null) {
00174 System.out.println("(null)");
00175 }
00176 else {
00177 get_Tim().print(dx.concat(" "));
00178 }
00179 if(get_rods().length > 0) {
00180 System.out.print(dx + " " + get_rods().length + " object(s) in rods :\n");
00181
00182 for(int i = 0; i < get_rods().length; i++) {
00183 get_rods()[i].print(dx.concat(" "));
00184 }
00185 }
00186 else {
00187 System.out.println(dx + " rods value is empty");
00188 }
00189
00190 }
00191
00197 public void destroy(config.Configuration db) {
00198 db.destroy(config_object());
00199 }
00200 }