Search in sources :

Example 1 with ModelQueryExtension

use of org.eclipse.wst.xml.core.internal.contentmodel.modelquery.extension.ModelQueryExtension in project webtools.sourceediting by eclipse.

the class ModelQueryExtensionManagerImpl method filterAvailableElementContent.

public void filterAvailableElementContent(List cmnodes, Element element, CMElementDeclaration ed, int includeOptions) {
    String contentTypeId = getContentTypeId(element);
    String parentNamespace = element.getNamespaceURI();
    List modelQueryExtensions = modelQueryExtensionRegistry.getApplicableExtensions(contentTypeId, parentNamespace);
    if ((includeOptions & ModelQuery.INCLUDE_CHILD_NODES) > 0) {
        for (Iterator j = cmnodes.iterator(); j.hasNext(); ) {
            CMNode cmNode = (CMNode) j.next();
            String namespace = getNamespace(cmNode);
            String name = cmNode.getNodeName();
            boolean include = true;
            for (int k = 0; k < modelQueryExtensions.size() && include; k++) {
                {
                    ModelQueryExtension extension = (ModelQueryExtension) modelQueryExtensions.get(k);
                    include = extension.isApplicableChildElement(element, namespace, name);
                    if (!include) {
                        // remove the cmNode from the list
                        j.remove();
                    }
                }
            }
        }
    }
    // add MQE-provided content
    for (int k = 0; k < modelQueryExtensions.size(); k++) {
        ModelQueryExtension extension = (ModelQueryExtension) modelQueryExtensions.get(k);
        cmnodes.addAll(Arrays.asList(extension.getAvailableElementContent(element, parentNamespace, includeOptions)));
    }
}
Also used : Iterator(java.util.Iterator) ArrayList(java.util.ArrayList) List(java.util.List) CMNode(org.eclipse.wst.xml.core.internal.contentmodel.CMNode) ModelQueryExtension(org.eclipse.wst.xml.core.internal.contentmodel.modelquery.extension.ModelQueryExtension)

Example 2 with ModelQueryExtension

use of org.eclipse.wst.xml.core.internal.contentmodel.modelquery.extension.ModelQueryExtension in project webtools.sourceediting by eclipse.

the class ModelQueryExtensionRegistry method getApplicableExtensions.

public List getApplicableExtensions(String contentTypeId, String namespace) {
    List list = new ArrayList();
    if (contentTypeId != null) {
        ensureExtensionsLoaded();
        for (Iterator i = descriptors.iterator(); i.hasNext(); ) {
            ModelQueryExtensionDescriptor descriptor = (ModelQueryExtensionDescriptor) i.next();
            final String[] contentTypeIds = StringUtils.unpack(descriptor.getContentTypeId());
            for (int j = 0; j < contentTypeIds.length; j++) {
                if (contentTypeId.equals(contentTypeIds[j])) {
                    if (descriptor.getNamespace() == null || descriptor.getNamespace().equals(namespace)) {
                        try {
                            ModelQueryExtension extension = descriptor.createModelQueryExtension();
                            list.add(extension);
                        } catch (CoreException e) {
                            // $NON-NLS-1$
                            Logger.logException("problem creating model query extension", e);
                        }
                    }
                    break;
                }
            }
        }
    }
    return list;
}
Also used : CoreException(org.eclipse.core.runtime.CoreException) ArrayList(java.util.ArrayList) Iterator(java.util.Iterator) List(java.util.List) ArrayList(java.util.ArrayList) ModelQueryExtension(org.eclipse.wst.xml.core.internal.contentmodel.modelquery.extension.ModelQueryExtension)

Example 3 with ModelQueryExtension

use of org.eclipse.wst.xml.core.internal.contentmodel.modelquery.extension.ModelQueryExtension in project webtools.sourceediting by eclipse.

the class ModelQueryExtensionManagerImpl method getDataTypeValues.

public List getDataTypeValues(Element element, CMNode cmNode) {
    List list = new ArrayList();
    String contentTypeId = getContentTypeId(element);
    String namespace = getNamespace(cmNode);
    String name = cmNode.getNodeName();
    for (Iterator i = modelQueryExtensionRegistry.getApplicableExtensions(contentTypeId, namespace).iterator(); i.hasNext(); ) {
        ModelQueryExtension extension = (ModelQueryExtension) i.next();
        String[] values = null;
        if (cmNode.getNodeType() == CMNode.ATTRIBUTE_DECLARATION) {
            values = extension.getAttributeValues(element, namespace, name);
        } else {
            values = extension.getElementValues(element, namespace, name);
        }
        if (values != null) {
            list.addAll(Arrays.asList(values));
        }
    }
    return list;
}
Also used : ArrayList(java.util.ArrayList) Iterator(java.util.Iterator) ArrayList(java.util.ArrayList) List(java.util.List) ModelQueryExtension(org.eclipse.wst.xml.core.internal.contentmodel.modelquery.extension.ModelQueryExtension)

Aggregations

ArrayList (java.util.ArrayList)3 Iterator (java.util.Iterator)3 List (java.util.List)3 ModelQueryExtension (org.eclipse.wst.xml.core.internal.contentmodel.modelquery.extension.ModelQueryExtension)3 CoreException (org.eclipse.core.runtime.CoreException)1 CMNode (org.eclipse.wst.xml.core.internal.contentmodel.CMNode)1