/*******************************************************************************
* Copyright © 2006, 2013 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*
*******************************************************************************/
package org.eclipse.edt.javart.resources.egldd;
import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class RuntimeDeploymentDesc {
private String name;
// private ArrayList<RestBinding> restBindings;
// private ArrayList<SQLDatabaseBinding> sqlDatabaseBindings;
protected ArrayList<String> includes;
private List<Binding> bindings = new ArrayList<Binding>();
public static RuntimeDeploymentDesc createRuntimeDeploymentDesc(String filepath) throws Exception
{
RuntimeDeploymentDesc desc = new RuntimeDeploymentDesc();
desc.setName(getNameFromFilePath(filepath));
RuntimeDeploymentDescParser parser = new RuntimeDeploymentDescParser();
parser.parse(desc, filepath);
return desc;
}
public static RuntimeDeploymentDesc createDeploymentDescriptor(String name, InputStream is) throws Exception
{
RuntimeDeploymentDesc desc = new RuntimeDeploymentDesc();
desc.setName(name);
RuntimeDeploymentDescParser parser = new RuntimeDeploymentDescParser();
parser.parse(desc, is);
return desc;
}
protected static String getNameFromFilePath(String path)
{
String name = null;
String fileName = new File(path).getName();
int eIdx = fileName.lastIndexOf('.');
if (eIdx < 1)
eIdx = fileName.length();
name = fileName.substring(0, eIdx);
return name;
}
protected RuntimeDeploymentDesc()
{
bindings = new ArrayList<Binding>();
includes = new ArrayList<String>();
}
public List<SQLDatabaseBinding> getSqlDatabaseBindings() {
List<SQLDatabaseBinding> sqlDatabaseBindings = new ArrayList<SQLDatabaseBinding>();
for(Binding binding : bindings){
if(binding instanceof SQLDatabaseBinding){
sqlDatabaseBindings.add((SQLDatabaseBinding)binding);
}
}
return sqlDatabaseBindings;
}
public void addSqlDatabaseBindingsAll(List<SQLDatabaseBinding> bindings)
{
bindings.addAll(bindings);
}
public void addSqlDatabaseBindings(SQLDatabaseBinding binding)
{
bindings.add(binding);
}
public void addRestBinding(RestBinding binding)
{
bindings.add(binding);
}
public void addRestBindingsAll(List<RestBinding> bindings)
{
this.bindings.addAll(bindings);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name.toLowerCase();
}
public List<RestBinding> getRestBindings() {
List<RestBinding> restBindings = new ArrayList<RestBinding>();
for(Binding binding : bindings){
if(binding instanceof RestBinding){
restBindings.add((RestBinding)binding);
}
}
return restBindings;
}
public List<DedicatedBinding> getDedicatedBindings() {
List<DedicatedBinding> dedicatedBindings = new ArrayList<DedicatedBinding>();
for(Binding binding : bindings){
if(binding instanceof DedicatedBinding){
dedicatedBindings.add((DedicatedBinding)binding);
}
}
return dedicatedBindings;
}
public void addInclude(String location)
{
this.includes.add(location);
}
public ArrayList<String> getIncludedDescs()
{
return includes;
}
public ArrayList<String> getIncludes()
{
return includes;
}
public void addBinding(Binding binding)
{
if(Binding.BINDING_DB_SQL.equalsIgnoreCase(binding.getType())){
bindings.add(new SQLDatabaseBinding(binding));
}
else if(Binding.BINDING_SERVICE_REST.equalsIgnoreCase(binding.getType())){
bindings.add(new RestBinding(binding));
}
else if(Binding.BINDING_SERVICE_DEDICATED.equalsIgnoreCase(binding.getType())){
bindings.add(new DedicatedBinding(binding));
}
else{
bindings.add(new Binding(binding));
}
}
public List<Binding> getBindings(){
return bindings;
}
}