package projectv1a; import java.util.*; public class ClassSpecification extends Object{ private String name; private boolean role; // ¿Abstracta? || false: No es abstracta private boolean patternMatch; private String description; private Vector attributeList; // Listado de todos sus atributos - AttributeSpecification private Vector superClassList; // Listado de sus superclases - ClassSpecification private Vector subClassList; // Listado de sus subclases - ClassSpecification // CLASES PARA CASTOR // Si aquí nos diera problemas una "posible solución" sería crear vectores de subclases y superclases replicados para CASTOR private Vector /*ClassSpecification*/ subClass; // Para las referencias de CASTOR private Vector /*ClassSpecification*/ superClass; // Para las referencias de CASTOR private int identity; private Ontology ontology; // Referencia a la ontología a la que pertenece. ///////////// CONSTRUCTORES ///////////// public ClassSpecification(){ name = "anonima"; role = false; patternMatch = false; attributeList = new Vector(); superClassList = new Vector(); subClassList = new Vector(); superClass = new Vector(); subClass = new Vector(); } public ClassSpecification(String n, boolean r, boolean pM){ name = n; role = r; patternMatch = pM; attributeList = new Vector(); superClassList = new Vector(); subClassList = new Vector(); superClass = new Vector(); subClass = new Vector(); } public ClassSpecification(String n){ name = n; role = false; patternMatch = false; attributeList = new Vector(); superClassList = new Vector(); subClassList = new Vector(); superClass = new Vector(); subClass = new Vector(); } ///////////////////////////////////////// public void setId(int i){ identity = i; } public int getId(){ return identity; } public void addAttribute(AttributeSpecification attribute){ // En realidad serán objetos de las hijas de AttributeSpecification if (attributeList.contains(attribute)){ System.out.println("The attribute already exists."); } else { attributeList.add(attribute); attribute.setClassSpecification(this); } } public void addSuperClass(ClassSpecification a){ // AL LORO: si añadimos una superclase, en otro lugar añadimos una subclase if (superClassList.contains(a)){ System.out.println("The class "+a.getName()+" already is a superclass of "+getName()+"."); } else { superClassList.add(a); } } public void addSubClass(ClassSpecification a){ // AL LORO: si añadimos una subclase, en otro lugar añadimos una superclase if (subClassList.contains(a)){ System.out.println("The class "+a.getName()+" already is a subclass of "+getName()+"."); } else { subClassList.add(a); } } public Vector getAttribute(){ return attributeList; } public void setAttribute(Vector v){ attributeList = v; } public void deleteAttribute(AttributeSpecification at){ if (attributeList.contains(at)){ attributeList.remove(at); } else { System.out.println("The selected attribute does not exist in the class"); } } public Vector getSuperClasses(){ return superClassList; } public Vector getSuperClassList(){ return superClassList; } public void setSuperClasses(Vector v){ superClassList = v; } public void setSuperClassList(Vector v){ superClassList = v; } public void deleteSuperclass(ClassSpecification c){ if (superClassList.contains(c)){ superClassList.remove(c); } else { System.out.println("The selected class is not a superclass."); } } public Vector getSubClasses(){ return subClassList; } public Vector getSubClassList(){ return subClassList; } public void setSubClasses(Vector v){ subClassList = v; } public void setSubClassList(Vector v){ subClassList = v; } public void deleteSubclass(ClassSpecification c){ if (subClassList.contains(c)){ subClassList.remove(c); } else { System.out.println("The selected class is not a subclass."); } } //////// PARA CASTOR //////// public Vector getSubClass(){ return subClass; } public void setSubClass(Vector subC){ subClass = subC; } public Vector getSuperClass(){ return superClass; } public void setSuperClass(Vector superC){ superClass = superC; } ///////////////////////////// public Ontology getOntology(){ return ontology; } public void setOntology(Ontology o){ ontology = o; } public String getName(){ return name; } public void setName(String n){ name = n; } public boolean getRole() { return role; } public void setRole(boolean r){ role = r; } public boolean getPM(){ return patternMatch; } public void setPM(boolean b){ patternMatch = b; } public void setDescription(String s){ description = s; } public String getDescription(){ return description; } public boolean leafClass(){ // Clase hoja if (subClassList.isEmpty()){ return true; // Si no tiene subclases es una clase hoja } else { return false; // Si tiene subclases NO es una clase hoja } } public boolean brotherClass(ClassSpecification brotherClass){ boolean found = false; for(int i=0; i