/* * Copyright 2014 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kie.workbench.common.services.datamodeller.parser.descr; import java.util.ArrayList; import java.util.List; public class FieldDescr extends ModifiersContainerDescr implements HasType { public FieldDescr( ) { super( ElementType.FIELD ); } public FieldDescr( String text, int start, int end ) { this( text, start, end, -1, -1 ); } public FieldDescr( String text, int start, int stop, int line, int position ) { super( ElementType.FIELD, text, start, stop, line, position ); } public TypeDescr getType( ) { return ( TypeDescr ) getElements( ).getFirst( ElementType.TYPE ); } public FieldDescr setType( TypeDescr type ) { getElements( ).removeFirst( ElementType.TYPE ); getElements( ).add( type ); return this; } public List<VariableDeclarationDescr> getVariableDeclarations( ) { List<VariableDeclarationDescr> variableDeclarations = new ArrayList<VariableDeclarationDescr>( ); for ( ElementDescriptor member : getElements( ).getElementsByType( ElementType.VARIABLE ) ) { variableDeclarations.add( ( VariableDeclarationDescr ) member ); } return variableDeclarations; } public FieldDescr addVariableDeclaration( VariableDeclarationDescr variableDeclarationDescr ) { getElements( ).add( variableDeclarationDescr ); return this; } public boolean removeVariableDeclaration( VariableDeclarationDescr variableDeclarationDescr ) { return getElements( ).remove( variableDeclarationDescr ); } public JavaTokenDescr getEndSemiColon( ) { return ( JavaTokenDescr ) getElements( ).getLast( ElementType.JAVA_SEMI_COLON ); } public FieldDescr setEndSemiColon( JavaTokenDescr element ) { getElements( ).removeFirst( ElementType.JAVA_SEMI_COLON ); getElements( ).add( element ); return this; } public VariableDeclarationDescr getVariableDeclaration( String name ) { if ( name == null ) { return null; } IdentifierDescr identifier; for ( VariableDeclarationDescr variable : getVariableDeclarations( ) ) { identifier = variable.getIdentifier( ); if ( identifier != null && name.equals( identifier.getIdentifier( ) ) ) { return variable; } } return null; } public FieldDescr removeVariableDeclaration( String name ) { VariableDeclarationDescr variableDeclarationDescr = getVariableDeclaration( name ); if (variableDeclarationDescr != null) { removeVariableDeclaration( variableDeclarationDescr ); } return this; } }