/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.meta.action.impl; import org.w3c.dom.*; import org.jboss.tools.common.meta.*; import org.jboss.tools.common.meta.action.XAttributeData; import org.jboss.tools.common.meta.action.XEntityData; import org.jboss.tools.common.meta.impl.*; import org.jboss.tools.common.model.XModelObjectConstants; public class XAttributeDataImpl implements XAttributeData, XMetaDataConstants { private String entityname; private String attributename; private XAttribute attribute; private boolean mandatory; private boolean isAdvanced; private String value = null; private boolean references = false; private XEntityDataImpl entityData; public XAttributeDataImpl() {} public XEntityData getEntityData() { return entityData; } public void setEntityData(XEntityDataImpl entityData) { this.entityData = entityData; } public boolean getMandatoryFlag() { return mandatory && !isAdvanced; } public boolean isAdvanced() { return isAdvanced; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public XAttribute getAttribute() { return (references) ? attribute : (attribute = loadReference()); } private XAttribute loadReference() { references = true; XModelMetaData meta = XModelMetaDataImpl.getInstance(); if(meta == null) return null; XModelEntity ent = meta.getEntity(entityname); if(ent == null) return null; XAttribute[] attr = ent.getAttributes(); for (int i = 0; i < attr.length; i++) { if(attr[i].getName().equals(attributename)) return attr[i]; } return null; } public void setDefaultValue() { XAttribute a = getAttribute(); if(a != null) setValue(a.getDefaultValue()); } public void load(Element el) { attributename = el.getAttribute("AttributeName"); //$NON-NLS-1$ entityname = ((Element)el.getParentNode()).getAttribute("EntityName"); //$NON-NLS-1$ String m = el.getAttribute("Mandatory"); //$NON-NLS-1$ mandatory = XModelObjectConstants.YES.equals(m) || "".equals(m); //$NON-NLS-1$ m = el.getAttribute("Advanced"); //$NON-NLS-1$ isAdvanced = XModelObjectConstants.YES.equals(m); } public String getAttributeName() { return attributename; } public static XAttributeDataImpl create(String entityname, String attributename, boolean mandatory) { XAttributeDataImpl impl = new XAttributeDataImpl(); impl.entityname = entityname; impl.attributename = attributename; impl.mandatory = mandatory; return impl; } }