티스토리 뷰

Software/Eclipse

EMF.Edit Commands

coart 2010. 10. 3. 20:09
EMF.Edit는 EMF moel을 수정할 수 있는 generic command들을 제공한다. 
이 Command들은 commond command component를 확장하여 구현되어 있지만, EMF model에 대한 dependency를 가진다.
구현 되어 있는 generic command들은 reflective EObject API를 사용하여 EMF model을 수정한다. 
구현 되어 있는 generic command들은 아래와 같다.

1. SetCommand
Eobject의 Attribute 나 reference의 값을 설정(Set) 할 떄 사용한다.

2. AddCommand
Eobject의 many-multiplicity Feature에 한개 또는 여러개의 object를 추가할 떄 사용한다.
※many-multiplicity라는 것은 어떤 object가 다른 object를 여러개 가지고 있을 때 쓰는 개념이다. 쉽게 이해하기 위해 parent와 child관계를 생각해보면, parent는 여러개의 child를 가질수 있다. 이때 many-multiplicity관계에 있다고 말하고, UML notation을 따르면 (1...*)관계에 있다고 한다. 

3. RemoveCommand
Eobject의 many-multipliciy Feature에 한개 또는 여러개의 object를 제거 할때 사용한다.

4. MoveCommand
Eobject의 multiplicity-many feature내에서 object의 위치를 이동 할 떄 사용한다. 쉽게 이해하기위해서 list에서 순서를 바꾸는 것 정도를 생각해 보면 쉽게 이해 할 수 있다.

5. ReplaceCommand
Eobject의 multiplicity-many feature에 속해 있는 object를 다른 object로 바꿀 때 사용한다.

6. CopyCommand
Eobject를 DeepCopy 할 떄 사용한다. 

이렇게 총 6개의 generic Command를 EMF.edit에서 사용한다. 아래는 AddCommand와 RemoveCommand를 사용 하는 예제이다. 

모델은 Company는 여러개의 Department를 가지고 있다고 생각하자(1...*). 그리고 Company는 모델의 최상위(root node)에 위치한다. 
Department는 Attribute로 name을 가지고 있고 Type는 String이다. 
 
1. SetCommand 사용하기
Company는 여러개의 department를 가지고 있고, department의 이름을 바꾸는 상황.

Department d = ...
EditingDomain ed = ...
Command cmd = new SetCommand(ed, d,  CompanySetPackage.getDepartment_DepartmentName(), "New Name");
ed.getCommandStack().execute(cmd);

2. AddCommand 사용하기
Company에 Department를 추가하는 상황을 가정하자. 

Company c = ... 
Department d = ...
EditingDomain ed = ...
Command cmd = new AddCommand(ed, c, companyPackage.getCompany_Department(), d);
ed.getCommandStack().execute(cmd);

3. RemoveCommand 사용하기
Company에서 특정 Department를 삭제하는 상황을 가정하자.

Company c = ...
Department d = ...
EditingDomain ed = ...
Command cmd = new RemoveCommand(ed, c, companyPackage.getCompany_Department(), d);
ed.getCommandStack().execute(cmd);

위의 예제는 Command를 사용하는 한가지 방법중의 하나 일 뿐이다. 조금더 자세한 방법을 알고 싶다면 블로그 내의 'Command를 사용하여 EMF model 수정하기' 라는 글을 참조 하기 바란다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31