I Have this Model :
1) Team :
public class Team {
private String nom ;
private Employee leader ;
private List<Employee> members = new ArrayList<Employee>();
private List<Person> persons = new ArrayList<Person>();
public Team() {
}
public Team(String nom, Employee leader, List<Employee> members, List<Person> persons) {
this.nom = nom;
this.leader = leader;
this.members = members;
this.persons = persons;
}
public Team(String nom) {
this.nom = nom;
}
public Employee addEmployee (Employee employee) {
members.add(employee);
return employee;
}
public Person addPerson (Person person) {
persons.add(person);
return person;
}
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public Employee getLeader() {
return leader;
}
public void setLeader(Employee leader) {
this.leader = leader;
}
public List<Employee> getMembers() {
return members;
}
public void setMembers(List<Employee> members) {
this.members = members;
}
@Override
public String toString() {
return "Team{" +
"nom='" + nom + '\'' +
", leader=" + leader +
", members=" + members +
'}';
}
public Team(int i){
this.setNom("team"+i);
this.setLeader(new Employee("MoMo" + i, "dd" + i));
this.addEmployee(new Employee("mehdi" + i, "dd" + i));
this.addEmployee(new Employee("albert" + i+1,"dd"+ i));
this.addEmployee(new Employee("lolo" + i+2,"dd"+ i));
this.addPerson(new Person("Person" + i));
this.addPerson(new Person("Person" + i+1 ));
this.addPerson(new Person("Person" + i+2 ));
}
2)
public class Employee {
private String cin;
private String nom;
private String prenom;
3)
public class Person {
private String address;
private String name;
public Person(){
}
public Person(String name) {
this.name = name;
}
public Person(String name, String address) {
this.name = name;
this.address = address;
}
public String getAddress() {
return address;
}
public String getName() {
return name;
}
}
I want to build a GWT TreeViewModel like the following :
Team => (i want to have my list of persons and my list of employees mixed)
Here is my TreeViewModel
public class EmployeeTreeModel implements TreeViewModel {
private final List<Team> teamList;
private final SingleSelectionModel<Employee> selectionModel
= new SingleSelectionModel<Employee>();
public EmployeeTreeModel() {
teamList = new ArrayList<Team>();
{
for (int i = 0; i < 5 ; i++) {
teamList.add(new Team(i) );
}
}
}
@Override
public <T> NodeInfo<?> getNodeInfo(T value) {
if (value == null) {
ListDataProvider<Team> dataProvider
= new ListDataProvider<Team>(teamList);
Cell<Team> cell = new AbstractCell<Team>() {
@Override
public void render(Context context, Team value, SafeHtmlBuilder sb) {
if (value != null) {
sb.appendHtmlConstant(" ");
sb.appendEscaped(value.getNom());
}
}
};
return new DefaultNodeInfo<Team>(dataProvider, cell);
}
else if (value instanceof Team) {
ListDataProvider<Employee> dataProvider
= new ListDataProvider<Employee>(
((Team) value).getMembers());
Cell<Employee> cell =
new AbstractCell<Employee>() {
@Override
public void render(Context context, Employee employee, SafeHtmlBuilder sb) {
if (employee != null) {
sb.appendHtmlConstant(" ");
sb.appendEscaped(employee.getNom());
}
}
};
return new DefaultNodeInfo<Employee>(dataProvider, cell,selectionModel, null);
}
return null;
}
@Override
public boolean isLeaf(Object o) {
if (o instanceof Employee) {
return true;
}else if(o instanceof Person){
return true;
}
else return false;
}
}
in my actual code I can't mix Employees data and Person's Data because two different objects
Any way to do that ? A listDataProvider who brings two Objects maybe ?