Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/**
 * Copyright (C) 2015 52North Initiative for Geospatial Open Source
 * Software GmbH
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 as published
 * by the Free Software Foundation.
 *
 * If the program is linked with libraries which are licensed under one of
 * the following licenses, the combination of the program with the linked
 * library is not considered a "derivative work" of the program:
 *
 *        Apache License, version 2.0
 *        Apache Software License, version 1.0
 *        GNU Lesser General Public License, version 3
 *        Mozilla Public License, versions 1.0, 1.1 and 2.0
 *        Common Development and Distribution License (CDDL), version 1.0
 *
 * Therefore the distribution of the program linked with libraries licensed
 * under the aforementioned licenses, is permitted by the copyright holders
 * if the distribution is compliant with both the GNU General Public
 * License version 2 and the aforementioned licenses.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
 * Public License for more details.
 */

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import java.util.Date;
import java.util.List;
import java.util.Locale;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Main {
    /**
     * Method to delete old elements and add new elements in target file based on tag name of source file.
     *
     * @param source
     * @param target
     * @param sourceTagName
     * @param targetTagNameParent
     * @param targetTagNameChild
     * @return document
     * @throws ParseException
     */
    public static Document addNewElements(Document source, Document target, String sourceTagName,
            String targetTagNameParent, String targetTagNameChild, List<String> ignoreList) throws ParseException { //list for attributes to be more dynamic if reuse
        //remove old entries 
        target = removeAllOptions(target);
        // add new entries
        NodeList nameList = source.getElementsByTagName(sourceTagName);
        NodeList parents = target.getElementsByTagName(targetTagNameParent);
        Element parent = (Element) parents.item(0); // g:options - only 1
        // element
        //add space placeholder as first entry
        Element o = target.createElement(targetTagNameChild);
        o.setAttribute("g:value", "");
        o.setAttribute("g:label", "");
        parent.appendChild(o);

        for (int i = 0; i < nameList.getLength(); i++) {
            String value = nameList.item(i).getTextContent();
            if (value != null && !value.equals("") && !ignoreList.contains(value)) {
                Element p = target.createElement(targetTagNameChild);
                p.setAttribute("g:value", value);
                p.setAttribute("g:label", value);
                parent.appendChild(p);
            }
        }
        return changeDate(target);
    }

    /**
     * Method to remove all children of g:options - element
     * 
     * @param doc document with children  g:options
     * @return document without children g:options
     */
    public static Document removeAllOptions(Document doc) {
        NodeList nodes = doc.getElementsByTagName("g:options");
        Node node = nodes.item(0);
        while (node.hasChildNodes())
            node.removeChild(node.getFirstChild());
        return doc;
    }

    /**
     * Method to change update date in xml files - used for reloadable issue and auto change on start up.
     * 
     * @param target document
     * @return updated document
     * @throws ParseException
     */
    private static Document changeDate(Document target) throws ParseException {
        NodeList parents = target.getElementsByTagName("g:options");
        Element parent = (Element) parents.item(0); //g:options - only 1 element
        DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.ENGLISH);
        Date newT = new Date();
        String time = format.format(newT);
        parent.setAttribute("time", time);
        return target;
    }
}