View Javadoc

1   package org.sourceforge.jemm.client;
2   
3   import org.sourceforge.jemm.database.ClassId;
4   import org.sourceforge.jemm.database.ClassInfo;
5   import org.sourceforge.jemm.database.ClientId;
6   import org.sourceforge.jemm.database.GetObjectResp;
7   import org.sourceforge.jemm.database.ObjectSyncData;
8   import org.sourceforge.jemm.database.ObjectSyncResp;
9   import org.sourceforge.jemm.database.StructureModifiedException;
10  import org.sourceforge.jemm.lifecycle.MethodListener;
11  import org.sourceforge.jemm.lifecycle.ShadowTypeObject;
12  import org.sourceforge.jemm.lifecycle.ShadowTypeObjectImpl;
13  import org.sourceforge.jemm.types.ID;
14  import org.sourceforge.jemm.util.JEMMObject;
15  import org.sourceforge.jemm.util.JEMMType;
16  
17  public class JEMMObjectCreatorImpl implements JEMMObjectCreator {
18  	protected final ClientId clientId = new ClientId("CLIENT");	
19  
20  	
21  	protected JEMMObjectFieldMapper fieldMapper;
22  	MethodListener methodListener;
23  	ObjectDatabase database;
24  	
25  	public JEMMObjectCreatorImpl(MethodListener ml,ObjectDatabase db) {
26  		this.methodListener = ml;
27  		this.database = db;
28  		fieldMapper = new JEMMObjectFieldMapper(ml,database);
29  	}
30  
31  	@Override public JEMMObject createObject(GetObjectResp resp,ClassInfo classInfo) {
32  		JEMMObject jo = fieldMapper.create(resp, classInfo);
33  		return jo;
34  	}
35  
36  	@Override
37  	public void refreshPrimitiveState(JEMMObject obj, GetObjectResp response) {
38  		fieldMapper.refreshPrimitiveState(obj, response);		
39  	}
40  
41  	@Override
42  	public ObjectSyncData getSyncData(JEMMObject jo) {
43  		return fieldMapper.getSyncData(jo);
44  	}
45  
46  	@Override
47  	public void syncResponseUpdateObject(JEMMObject jo, ObjectSyncResp response) {
48  		fieldMapper.syncResponseUpdateObject(jo,response);
49  	}
50  
51  	@Override
52  	public void initialise(JEMMObject origin) {
53  		try {
54  			ObjectAccessor oa = new ObjectAccessor(origin,database);
55  			
56  			if(oa.isCreated())
57  				return;
58  
59  			ClassMetadata cia = new ClassMetadata(origin);
60  			ClassId classID = database.registerClass(cia.getClassInfo());			
61  			ID objID = database.newObject(classID,origin);
62  			oa.create(objID,methodListener);
63  		}catch(StructureModifiedException sme) {
64  			throw new RuntimeException(sme);			
65  		}
66  	}
67  
68  	@Override
69  	public void initialise(JEMMType typeInstance) {
70          try {            
71              ClassInfo ci = new ClassInfo(typeInstance.getClass());
72              ClassId classId = database.registerClass(ci);
73              
74              ID objID = database.newObject(classId,typeInstance);
75          
76              ShadowTypeObject sto = new ShadowTypeObjectImpl(typeInstance,objID,classId,database);
77              typeInstance.setShadow(sto);
78          
79          } catch (StructureModifiedException e1) {
80              throw new RuntimeException(e1);
81          }
82  	}
83  }