package pt.ist.fenixframework.dml;
import java.util.*;
import java.net.URL;
public class DomainRelation extends DomainClass {
private List<Role> roles = new ArrayList<Role>();
public DomainRelation(URL sourceFile, String name, DomainRelation superrelation, List interfaces) {
super(sourceFile, name, superrelation, interfaces);
}
public DomainRelation getSuperrelation() {
return (DomainRelation)getSuperclass();
}
public void addRole(Role role) {
role.setRelation(this);
roles.add(role);
}
public int countRoles() {
DomainRelation superRel = getSuperrelation();
return roles.size() + ((superRel == null) ? 0 : superRel.countRoles());
}
public List<Role> getRoles() {
int numRoles = countRoles();
List<Role> result = new ArrayList<Role>(numRoles);
copyRolesInto(this, result);
return result;
}
public Role getFirstRole() {
return roles.get(0);
}
public Role getSecondRole() {
return roles.get(1);
}
private static void copyRolesInto(DomainRelation rel, List<Role> result) {
DomainRelation superRel = rel.getSuperrelation();
if (superRel != null) {
copyRolesInto(superRel, result);
}
result.addAll(rel.roles);
}
}