/******************************************************************************* * 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.*; import org.jboss.tools.common.meta.impl.*; import org.jboss.tools.common.model.XModelObjectConstants; public class XEntityDataImpl implements XEntityData, XMetaDataConstants { private String entityname; private XModelEntity entity = null; private XAttributeDataImpl[] attributes; private boolean mandatory; private boolean references = false; public XEntityDataImpl() {} public boolean getMandatoryFlag() { return mandatory; } public XAttributeData[] getAttributeData() { return attributes; } public XModelEntity getModelEntity() { return (references) ? entity : (entity = loadReference()); } private XModelEntity loadReference() { references = true; XModelMetaData meta = XModelMetaDataImpl.getInstance(); return (meta == null) ? null : meta.getEntity(entityname); } public void setDefaultValues() { for (int i = 0; i < attributes.length; i++) attributes[i].setDefaultValue(); } public void load(Element el) { entityname = el.getAttribute("EntityName"); //$NON-NLS-1$ mandatory = XModelObjectConstants.YES.equals(el.getAttribute("Mandatory")); //$NON-NLS-1$ Element[] cs = XMetaDataLoader.getChildrenElements(el, "AttributeData"); //$NON-NLS-1$ attributes = new XAttributeDataImpl[cs.length]; for (int i = 0; i < cs.length; i++) { attributes[i] = new XAttributeDataImpl(); attributes[i].setEntityData(this); attributes[i].load(cs[i]); } } public String getEntityName() { return entityname; } /** * * @param data (non-translatable) * @return */ public static XEntityDataImpl create(String[][] data) { XEntityDataImpl impl = new XEntityDataImpl(); impl.entityname = data[0][0]; impl.mandatory = data[0].length > 1 && XModelObjectConstants.YES.equals(data[0][1]); impl.attributes = new XAttributeDataImpl[data.length - 1]; for (int i = 0; i < impl.attributes.length; i++) { impl.attributes[i] = XAttributeDataImpl.create(impl.entityname, data[i + 1][0], (data[i + 1].length > 1 && XModelObjectConstants.YES.equals(data[i + 1][1]))); impl.attributes[i].setEntityData(impl); } return impl; } private XAttributeData find(String name) { for (int i = 0; i < attributes.length; i++) if(attributes[i].getAttribute().getName().equals(name)) return attributes[i]; return null; } public String getValue(String name) { XAttributeData d = find(name); return (d == null) ? null : d.getValue(); } public void setValue(String name, String value) { XAttributeData d = find(name); if(d != null) d.setValue(value); } }