org.eclipse.skalli.core.issues.IssuesDataMigration19.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.skalli.core.issues.IssuesDataMigration19.java

Source

/*******************************************************************************
 * Copyright (c) 2010-2014 SAP AG 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:
 *     SAP AG - initial API and implementation
 *******************************************************************************/
package org.eclipse.skalli.core.issues;

import org.apache.commons.lang.StringUtils;
import org.eclipse.skalli.services.extension.DataMigrationBase;
import org.eclipse.skalli.services.extension.MigrationException;
import org.eclipse.skalli.services.extension.MigrationUtils;
import org.eclipse.skalli.services.issues.Issues;
import org.eclipse.skalli.services.issues.IssuesService;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class IssuesDataMigration19 extends DataMigrationBase {

    public IssuesDataMigration19() {
        super(Issues.class, 19);
    }

    /**
     * Changes from model version 18->19:
     * <ol>
     *   <li>renamed root element org.eclipse.skalli.model.ext.Issues to "issues"</li>
     *   <li>renamed root element org.eclipse.skalli.model.ext.Issue to "issue"</li>
     * </ol>
     */
    @SuppressWarnings("nls")
    @Override
    public void migrate(Document doc) throws MigrationException {
        MigrationUtils.renameTag(doc, doc.getDocumentElement(), "entity-issues");
        MigrationUtils.renameAllTags(doc, "org.eclipse.skalli.model.ext.Issue", "issue");
        MigrationUtils.removeAllTags(doc, "extension");
        NodeList nodes = doc.getElementsByTagName("issuer");
        for (int i = 0; i < nodes.getLength(); ++i) {
            Element elem = (Element) nodes.item(i);
            elem.setTextContent(IssuesService.class.getName());
        }
        Element staleElem = MigrationUtils.getChild(doc.getDocumentElement(), "stale");
        if (staleElem == null) {
            staleElem = doc.createElement("stale");
            doc.getDocumentElement().appendChild(staleElem);
        }
        staleElem.setTextContent("true");
    }

    // before the "grand" refactoring, Group was in package org.eclipse.skalli.common!
    @SuppressWarnings("nls")
    @Override
    public boolean handlesType(String entityClassName) {
        return super.handlesType(entityClassName)
                || StringUtils.equals(entityClassName, "org.eclipse.skalli.model.ext.Issues");
    }
}