package com.openMap1.mapper.health.v3;
import java.util.Hashtable;
import java.util.List;
import java.util.Vector;
import org.eclipse.emf.ecore.EClass;
import com.openMap1.mapper.util.GenUtil;
/**
* declaration of a concrete class (i.e not a choice or a CMET reference)
* in a V3 RMIM
*
* @author robert
*
*/
public class ConcreteClass extends V3Name {
private EClass eClass;
public EClass eClass() {return eClass;}
public ConcreteClass(String name, EClass eClass)
{
super(name);
this.eClass = eClass;
}
/**
* @return a List of the one EClass
*/
public List<EClass> getAllEClasses()
{
Vector<EClass> classes = new Vector<EClass>();
classes.add(eClass);
return classes;
}
/**
* @return all ConcreteClasses nested directly or indirectly in this V3Name
*/
public List<ConcreteClass> getAllConcreteClasses()
{
Vector<ConcreteClass> classes = new Vector<ConcreteClass>();
classes.add(this);
return classes;
}
/**
* @return the number of items at the top level in this V3Name
*/
public int nItems() {return 1;}
/**
* @param name
* @return the V3Name child with that name, or null if there is none
*/
public V3Name getNamedChild(String name) {return null;}
public String stringForm()
{
if (templateIds.size() == 0) return ("Class " + eClass.getName());
return ("Class " + eClass.getName()) + "; templates: " + GenUtil.concatenate(templateIds, ",");
}
//--------------------------------------------------------------------------------------------------------------
// Features used only for NHS Templated RMIMs
//--------------------------------------------------------------------------------------------------------------
private Vector<String> templateIds = new Vector<String>();
private Hashtable<String,EClass> templateClones = new Hashtable<String,EClass>();
private Hashtable<String,String> templateNameSuffixes = new Hashtable<String,String>();
/**
* For use with NHS MIF files only
* @return the RMIM ids of templates invoked by this class
* (which must be an ActRelationship or a Participation)
*/
public Vector<String> templateNames() {return templateIds;}
public void setTemplateIds(Vector<String> templateIds) {this.templateIds = templateIds;}
/**
* @param templateName
* @return the clone of this class made for a template, with class name
* modified by the temple entry class name
*/
public EClass getTemplateClone(String templateName) {return templateClones.get(templateName);}
/**
*
* store the clone of this class made for a template, with class name
* modified by the temple entry class name
* @param templateName
* @param clone
*/
public void addTemplateClone(String templateName, EClass clone) {templateClones.put(templateName,clone);}
/**
* @param templateName
* @return the suffix to add to names of the template clone class, and to the name of the
* association to it, for the template
*/
public String getTemplateNameSuffix(String templateName) {return templateNameSuffixes.get(templateName);}
/**
* store the suffix to add to names of the template clone class, and to the name of the
* association to it, for the template
* @param templateName
* @param suffix
*/
public void addTemplateNameSuffix(String templateName, String suffix) {templateNameSuffixes.put(templateName, suffix);}
}