/*******************************************************************************
* Copyright (c) 2011 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.cdi.seam.config.core.definition;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.jboss.tools.cdi.seam.config.core.xml.SAXElement;
/**
*
* @author Viacheslav Kabanovich
*
*/
public class SeamBeanDefinition extends SeamMemberDefinition {
protected boolean inline = false;
protected IType type = null;
protected List<SeamFieldDefinition> fields = new ArrayList<SeamFieldDefinition>();
protected List<SeamMethodDefinition> methods = new ArrayList<SeamMethodDefinition>();
/**
* Assigned to config type definition built on the base of this object;
*/
protected ConfigTypeDefinition configType = null;
public SeamBeanDefinition() {}
public SAXElement getElement() {
return (SAXElement)getNode();
}
public void setInline(boolean b) {
inline = b;
}
public boolean isInline() {
return inline;
}
public void setType(IType type) {
this.type = type;
}
public IType getType() {
return type;
}
public void addField(SeamFieldDefinition field) {
fields.add(field);
field.setParent(this);
}
public void addMethod(SeamMethodDefinition method) {
methods.add(method);
method.setParent(this);
}
public SeamFieldDefinition getField(String name) {
for (SeamFieldDefinition d: fields) {
if(name.equals(d.getName())) return d;
}
return null;
}
public List<SeamMethodDefinition> getMethods() {
return methods;
}
public SeamMethodDefinition getMethod(IMethod method) {
for (SeamMethodDefinition m: methods) {
IMethod c = m.getMethod();
if(c != null && c.getElementName().equals(method.getElementName())
&& c.equals(method)) {
return m;
}
}
return null;
}
public SeamMemberDefinition findExactly(int offset) {
if(node.getLocation().includes(offset)) return this;
for (SeamFieldDefinition f: fields) {
if(f.getNode().getLocation().includes(offset)) return f;
}
for (SeamMethodDefinition m: methods) {
if(m.getNode().getLocation().includes(offset)) return m;
}
return null;
}
public List<SeamFieldDefinition> getFields() {
return fields;
}
public void setConfigType(ConfigTypeDefinition configType) {
this.configType = configType;
}
public ConfigTypeDefinition getConfigType() {
return configType;
}
}