/*******************************************************************************
* Copyright (c) 2008, 2012 Obeo.
* 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
*
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.emf.eef.runtime.ui.widgets.settings;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EReference;
/**
* @author glefur
* @since 1.0
*
*/
public class NavigationStepBuilder {
private EReference reference;
private int index;
private EClassifier discriminator;
private EEFInitializer init;
private List<EEFFilter> filters;
/**
* Prevent external instanciation.
*/
private NavigationStepBuilder() {
filters = new ArrayList<EEFFilter>();
};
/**
* @param eReference
* @return a new {@link NavigationStep} instance.
*/
public static NavigationStepBuilder create(EReference reference) {
NavigationStepBuilder navigationStepBuilder = new NavigationStepBuilder();
navigationStepBuilder.reference = reference;
return navigationStepBuilder;
}
public NavigationStepBuilder index(int index) {
this.index = index;
return this;
}
public NavigationStepBuilder discriminator(EClassifier discriminator) {
this.discriminator = discriminator;
return this;
}
public NavigationStepBuilder init(EEFInitializer init) {
this.init = init;
return this;
}
public NavigationStepBuilder filter(EEFFilter filter) {
this.filters.add(filter);
return this;
}
public NavigationStep build() {
NavigationStepImpl build = new NavigationStepImpl();
build.reference = this.reference;
build.index = this.index;
build.discriminator = this.discriminator;
build.init = this.init;
build.filters = this.filters;
return build;
}
class NavigationStepImpl implements NavigationStep {
private EReference reference;
private int index;
private EClassifier discriminator;
private EEFInitializer init;
private List<EEFFilter> filters;
private NavigationStepImpl() {
index = NavigationStep.NOT_INITIALIZED;
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.eef.runtime.ui.widgets.settings.NavigationStep#getReference()
*/
public EReference getReference() {
return reference;
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.eef.runtime.ui.widgets.settings.NavigationStep#getIndex()
*/
public int getIndex() {
return index;
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.eef.runtime.ui.widgets.settings.NavigationStep#getDiscriminator()
*/
public EClassifier getDiscriminator() {
return discriminator;
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.eef.runtime.ui.widgets.settings.NavigationStep#getInit()
*/
public EEFInitializer getInit() {
return init;
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.eef.runtime.ui.widgets.settings.NavigationStep#getFilter()
*/
public List<EEFFilter> getFilters() {
return filters;
}
}
}