com.izforge.izpack.util.xmlmerge.factory.AttributeOperationFactory.java Source code

Java tutorial

Introduction

Here is the source code for com.izforge.izpack.util.xmlmerge.factory.AttributeOperationFactory.java

Source

/*
 * IzPack - Copyright 2001-2010 Julien Ponge, All Rights Reserved.
 *
 * http://izpack.org/
 * http://izpack.codehaus.org/
 *
 * Copyright 2009 Laurent Bovet, Alex Mathey
 * Copyright 2010, 2012 Ren Krell
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.izforge.izpack.util.xmlmerge.factory;

import org.jdom2.Element;
import org.jdom2.Namespace;

import com.izforge.izpack.util.xmlmerge.AbstractXmlMergeException;
import com.izforge.izpack.util.xmlmerge.Operation;
import com.izforge.izpack.util.xmlmerge.OperationFactory;

/**
 * Creates operations by inspecting keywords passed as attributes in patch elements.
 *
 * @author Laurent Bovet (LBO)
 * @author Alex Mathey (AMA)
 */
public class AttributeOperationFactory implements OperationFactory {

    /**
     * Default operation.
     */
    private Operation m_defaultOperation;

    /**
     * Namespace describing the operations to apply.
     */
    private Namespace m_namespace;

    /**
     * Keyword.
     */
    private String m_keyword;

    /**
     * Operation resolver.
     */
    private OperationResolver m_resolver;

    /**
     * Creates a new AttributeOperationFactory.
     *
     * @param defaultOperation The factory's default operation
     * @param resolver The factory's operation resolver
     * @param keyword The name of the attribute representing the factory's operation
     * @param namespace The namespace describing the operations to apply
     */
    public AttributeOperationFactory(Operation defaultOperation, OperationResolver resolver, String keyword,
            String namespace) {
        this.m_defaultOperation = defaultOperation;
        this.m_keyword = keyword;
        this.m_resolver = resolver;
        this.m_namespace = Namespace.getNamespace(namespace);
    }

    @Override
    public Operation getOperation(Element originalElement, Element modifiedElement)
            throws AbstractXmlMergeException {

        if (modifiedElement == null) {
            return m_defaultOperation;
        }

        String operationString = modifiedElement.getAttributeValue(m_keyword, m_namespace);

        if (operationString != null) {
            return m_resolver.resolve(operationString);
        } else {
            return m_defaultOperation;
        }

    }
}