// ============================================================================
//
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.designer.core.model.components;
import java.util.ArrayList;
import java.util.List;
import org.talend.core.model.components.IMultipleComponentConnection;
import org.talend.core.model.components.IMultipleComponentItem;
import org.talend.core.model.components.IMultipleComponentManager;
import org.talend.core.model.components.IMultipleComponentParameter;
/**
* DOC nrousseau class global comment. Detailled comment <br/>
*
* $Id: MultipleComponentManager.java 77219 2012-01-24 01:14:15Z mhirt $
*
*/
public class MultipleComponentManager implements IMultipleComponentManager {
private IMultipleComponentItem input;
private IMultipleComponentItem output;
private String inputName;
private String outputName;
private String connector = null;
private boolean existsLinkTo = false;
private List<IMultipleComponentItem> itemList = new ArrayList<IMultipleComponentItem>();
private List<IMultipleComponentParameter> paramList = new ArrayList<IMultipleComponentParameter>();
private boolean lookupMode;
public MultipleComponentManager(boolean lookupMode) {
this.lookupMode = lookupMode;
}
public MultipleComponentManager(String inputName, String outputName) {
this.inputName = inputName;
this.outputName = outputName;
}
public MultipleComponentManager(String inputName, String outputName, String connector) {
this(inputName, outputName);
this.connector = connector;
}
public IMultipleComponentItem addItem(String name, String component) {
MultipleComponentItem currentItem = new MultipleComponentItem();
if (name.equals(inputName)) {
input = currentItem;
}
if (name.equals(outputName)) {
output = currentItem;
}
currentItem.setName(name);
currentItem.setComponent(component);
itemList.add(currentItem);
return currentItem;
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IMultipleComponentManager#addParam(java.lang.String, java.lang.String)
*/
public void addParam(String source, String target) {
paramList.add(new MultipleComponentParameter(source, target));
}
public void addValue(String target, String value) {
paramList.add(new MultipleComponentParameterValue(target, value));
}
public void validateItems() {
for (IMultipleComponentItem mainItem : itemList) {
for (IMultipleComponentConnection connection : mainItem.getOutputConnections()) {
String nameLinkedTo = connection.getNameTarget();
if (nameLinkedTo != null) {
boolean found = false;
for (int i = 0; i < itemList.size() && !found; i++) {
IMultipleComponentItem linkedItem = itemList.get(i);
if (linkedItem.getName().equals(nameLinkedTo)) {
connection.setSource(mainItem);
connection.setTarget(linkedItem);
linkedItem.getInputConnections().add(connection);
found = true;
}
}
}
}
}
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.model.components.IMultipleComponentManager#getInput()
*/
public IMultipleComponentItem getInput() {
return this.input;
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.model.components.IMultipleComponentManager#getOutput()
*/
public IMultipleComponentItem getOutput() {
return this.output;
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IMultipleComponentManager#getOutputName()
*/
public String getOutputName() {
return this.outputName;
}
public List<IMultipleComponentItem> getItemList() {
return this.itemList;
}
public List<IMultipleComponentParameter> getParamList() {
return this.paramList;
}
public boolean isSetConnector() {
return this.connector != null;
}
public String getConnector() {
return this.connector;
}
public boolean existsLinkTo() {
return this.existsLinkTo;
}
public void setExistsLinkTo(boolean flag) {
this.existsLinkTo = flag;
}
/**
* Getter for lookupMode.
*
* @return the lookupMode
*/
public boolean isLookupMode() {
return this.lookupMode;
}
}