/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.core;
import java.util.ArrayList;
import org.osgi.framework.Bundle;
/**
*
*
* @since 8.0
*/
public class ExtensionMultiDescriptorImpl extends ExtensionDescriptorImpl {
private ArrayList children;
// ==================================================================================
// C O N S T R U C T O R S
// ==================================================================================
public ExtensionMultiDescriptorImpl( final Object id,
final String className,
final Bundle bundle ) {
super(id, className, bundle);
this.children = new ArrayList();
}
// ==================================================================================
// P U B L I C M E T H O D S
// ==================================================================================
/* (non-Javadoc)
* @See org.teiid.designer.core.ExtensionDescriptor#getChildren()
*/
@Override
public ExtensionDescriptor[] getChildren() {
if (children == null || children.size() == 0) {
return EMPTY_ARRAY;
}
ExtensionDescriptor[] result = new ExtensionDescriptor[children.size()];
children.toArray(result);
return result;
}
/* (non-Javadoc)
* @See org.teiid.designer.core.ExtensionDescriptor#isMultiDescriptor()
*/
@Override
public boolean isMultiDescriptor() {
return true;
}
/* (non-Javadoc)
* @See org.teiid.designer.core.ExtensionDescriptor#getChildDescriptor(java.lang.Object)
*/
@Override
public ExtensionDescriptor getChildDescriptor( final Object id ) {
if (children == null || children.size() == 0) {
return null;
}
for (int i = 0, n = children.size(); i < n; i++) {
final ExtensionDescriptor descriptor = (ExtensionDescriptor)children.get(i);
final Object descriptorId = descriptor.getId();
if (descriptorId != null && descriptorId.equals(id)) {
return descriptor;
}
}
return null;
}
/* (non-Javadoc)
* @See org.teiid.designer.core.validation.ValidationRuleSet#addRule(org.teiid.designer.core.validation.ValidationRule)
*/
public void addDescriptor( final ExtensionDescriptor descriptor ) {
if (children == null) {
children = new ArrayList();
}
final Object descriptorId = descriptor.getId();
if (descriptorId != null && getChildDescriptor(descriptorId) != null) {
children.remove(getChildDescriptor(descriptorId));
}
children.add(descriptor);
}
}