All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ecfeed.core.model.ParametersParentNode Maven / Gradle / Ivy

/*******************************************************************************
 *
 * Copyright (c) 2016 ecFeed AS.                                                
 * All rights reserved. This program and the accompanying materials              
 * are 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 
 *  
 *******************************************************************************/

package com.ecfeed.core.model;

import java.util.ArrayList;
import java.util.List;

import com.ecfeed.core.utils.ExceptionHelper;

public abstract class ParametersParentNode extends AbstractNode {

	private List fParameters;

	public ParametersParentNode(String name, IModelChangeRegistrator modelChangeRegistrator) {

		super(name, modelChangeRegistrator);
		fParameters = new ArrayList();
	}

	public abstract List getMethods(AbstractParameterNode parameter);	

	public void addParameter(AbstractParameterNode parameter) {

		addParameter(parameter, fParameters.size());
	}

	public void addParameter(AbstractParameterNode parameter, int index) {

		if (parameterExists(parameter)) {
			ExceptionHelper.reportRuntimeException("Parameter: " + parameter.getFullName() + " already exists.");
		}

		fParameters.add(index, parameter);
		registerChange();
		parameter.setParent(this);
	}

	public List getParameters(){
		return fParameters;
	}

	public int getParametersCount(){
		return fParameters.size();
	}	

	public AbstractParameterNode getParameter(String parameterName) {

		for (AbstractParameterNode parameter : fParameters) {
			if (parameter.getFullName().equals(parameterName)) {
				return parameter;
			}
		}
		return null;
	}

	public AbstractParameterNode getParameter(int parameterIndex) {

		return fParameters.get(parameterIndex);
	}	

	public int getParameterIndex(String parameterName) {

		int index = 0;

		for (AbstractParameterNode parameter : fParameters) {
			if (parameter.getFullName().equals(parameterName)) {
				return index;
			}
			index++;
		}
		return -1;
	}

	public boolean parameterExists(String parameterName) {

		if (getParameter(parameterName) == null) {
			return false;
		}

		return true;
	}

	public boolean parameterExists(AbstractParameterNode abstractParameterNode) {

		if (parameterExists(abstractParameterNode.getFullName())) {
			return true;
		}

		return false;
	}

	public List getParameterTypes() {

		List types = new ArrayList();

		for (AbstractParameterNode parameter : fParameters) {
			types.add(parameter.getType());
		}

		return types;
	}

	public List getParametersNames() {

		List names = new ArrayList();

		for(AbstractParameterNode parameter : fParameters){
			names.add(parameter.getFullName());
		}

		return names;
	}

	public boolean removeParameter(AbstractParameterNode parameter) {

		parameter.setParent(null);

		boolean result = fParameters.remove(parameter);
		registerChange();
		
		return result;
	}

	public void replaceParameters(List parameters) {

		fParameters.clear();
		fParameters.addAll(parameters);
		
		registerChange();
	}

	@Override
	public List getChildren() {

		return fParameters;
	}

	@Override
	public boolean isMatch(AbstractNode node) {

		if (node instanceof ParametersParentNode == false) {
			return false;
		}

		ParametersParentNode comparedParent = (ParametersParentNode)node;

		if(getParameters().size() != comparedParent.getParameters().size()) {
			return false;
		}

		for (int i = 0; i < getParameters().size(); ++i) {

			if (getParameters().get(i).isMatch(comparedParent.getParameters().get(i)) == false) {
				return false;
			}
		}

		return super.isMatch(node);
	}

	public static String generateNewParameterName(ParametersParentNode fParametersParentNode, String startParameterName) {

		for (int i = 1;   ; i++) {

			String newParameterName = startParameterName + String.valueOf(i);

			if (!fParametersParentNode.parameterExists(newParameterName)) {
				return newParameterName;
			}
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy