// Copyright FreeHEP 2005. package hep.graphics.heprep1.corba; import java.util.Enumeration; import hep.graphics.heprep1.*; import hep.graphics.heprep1.ref.*; import hep.graphics.heprep1.util.*; /** * * @author M.Donszelmann * * @version $Id: HepRepAttributeAdapter.java 8584 2006-08-10 23:06:37Z duns $ */ public abstract class HepRepAttributeAdapter extends DefaultHepRepAttribute implements HepRepAttribute { /** * Add a CORBA Wrapper * @param parent attribute parent */ public HepRepAttributeAdapter(HepRepAttribute parent) { super(parent); } public Enumeration getAttValues() { return HepRepUtil.enumeration(super.getAttValues(), new Enumeration() { private int i = 0; private hep.graphics.heprep1.corba.idl.HepRepAttValue[] attVals = getAttValuesFromNode(); public boolean hasMoreElements() { return i < attVals.length; } public Object nextElement() { Object element = new HepRepAttValueAdapter(attVals[i]); i++; return element; } }); } public Enumeration getAttDefs() { return HepRepUtil.enumeration(super.getAttDefs(), new Enumeration() { private int i = 0; private hep.graphics.heprep1.corba.idl.HepRepAttDef[] attDefs = getAttDefsFromNode(); public boolean hasMoreElements() { return i < attDefs.length; } public Object nextElement() { Object element = new HepRepAttDefAdapter(attDefs[i]); i++; return element; } }); } public HepRepAttValue getAttValueFromNode(String name) { HepRepAttValue attValue = super.getAttValueFromNode(name); if (attValue != null) return attValue; hep.graphics.heprep1.corba.idl.HepRepAttValue[] attVals = getAttValuesFromNode(); for (int i=0; i<attVals.length; i++) { if (name.equalsIgnoreCase(attVals[i].name)) return new HepRepAttValueAdapter(attVals[i]); } return (getParent() == null) ? HepRepDefaults.getAttValue(name) : null; } public HepRepAttDef getAttDefFromNode(String name) { HepRepAttDef attDef = super.getAttDefFromNode(name); if (attDef != null) return attDef; hep.graphics.heprep1.corba.idl.HepRepAttDef[] attDefs = getAttDefsFromNode(); for (int i=0; i<attDefs.length; i++) { if (name.equalsIgnoreCase(attDefs[i].name)) return new HepRepAttDefAdapter(attDefs[i]); } return null; } protected abstract hep.graphics.heprep1.corba.idl.HepRepAttValue[] getAttValuesFromNode(); protected abstract hep.graphics.heprep1.corba.idl.HepRepAttDef[] getAttDefsFromNode(); }