buildframework/helium/sf/java/legacy/src/com/nokia/ant/BuildStatusDef.java
author wbernard
Fri, 13 Aug 2010 14:59:05 +0300
changeset 628 7c4a911dc066
parent 588 c7c26511138f
permissions -rw-r--r--
helium_11.0.0-e00f171ca185
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     1
/*
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     2
 * Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     3
 * All rights reserved.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     4
 * This component and the accompanying materials are made available
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     5
 * under the terms of the License "Eclipse Public License v1.0"
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     6
 * which accompanies this distribution, and is available
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     8
 *
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     9
 * Initial Contributors:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    10
 * Nokia Corporation - initial contribution.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    11
 *
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    12
 * Contributors:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    13
 *
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    14
 * Description: 
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    15
 *
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    16
 */
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    17
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    18
package com.nokia.ant;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    19
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    20
import java.io.File;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    21
import java.io.IOException;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    22
import java.util.ArrayList;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    23
import java.util.Enumeration;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    24
import java.util.HashSet;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    25
import java.util.Hashtable;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    26
import java.util.Iterator;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    27
import java.util.List;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    28
import java.util.Vector;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    29
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    30
import org.apache.tools.ant.BuildException;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    31
import org.apache.tools.ant.Project;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    32
import org.apache.tools.ant.Target;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    33
import org.apache.tools.ant.types.DataType;
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    34
import org.dom4j.Comment;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    35
import org.dom4j.Document;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    36
import org.dom4j.DocumentException;
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    37
import org.dom4j.Element;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    38
import org.dom4j.Node;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    39
import org.dom4j.Visitor;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    40
import org.dom4j.VisitorSupport;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    41
import org.dom4j.io.SAXReader;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    42
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    43
import com.nokia.helium.ant.data.PropertyCommentMeta;
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    44
import com.nokia.helium.ant.data.PropertyMeta;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    45
import com.nokia.helium.core.ant.PostBuildAction;
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    46
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    47
/**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    48
 * Class to store the status of the signal of a particular target.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    49
 */
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    50
public class BuildStatusDef extends DataType implements PostBuildAction {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    51
    private static final String DEPRECATED = "deprecated:";
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    52
    private HashSet<String> output = new HashSet<String>();
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    53
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    54
    @Override
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    55
    public void executeOnPostBuild(Project project, String[] targetNames) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    56
        // Run after targets execute so dynamic target names are resolved
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    57
        for (int i = 0; i < targetNames.length; i++) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    58
            String[] array = { targetNames[i] };
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    59
            Target target = findTarget(targetNames[i], getProject(), array);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    60
            targetCallsHeliumTarget(target, getProject());
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    61
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    62
        checkTargetsProperties(getProject());
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    63
        checkDeprecatedProperties(getProject());
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    64
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    65
        if (!output.isEmpty()) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    66
            log("*** Configuration report ***", Project.MSG_INFO);
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    67
            for (String outputStr : output) {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
    68
                log(outputStr, Project.MSG_INFO);
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    69
            }
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    70
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    71
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    72
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    73
    /**
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    74
     * @param desiredTarget
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    75
     *            Target name to search
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    76
     * @param project
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    77
     *            Object of the project
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    78
     * @param targetNames
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    79
     *            Array of target names
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    80
     * 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    81
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    82
    @SuppressWarnings("unchecked")
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    83
    public Target findTarget(String desiredTarget, Project project,
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    84
            String[] targetNames) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    85
        Hashtable<String, Target> targets;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    86
        Vector<Target> sorted;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    87
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    88
        // get all targets of the current project
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    89
        targets = project.getTargets();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    90
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    91
        // sort all targets of the current project
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    92
        sorted = project.topoSort(targetNames[0], targets);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    93
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    94
        // Find the desiredTarget Target object
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    95
        for (Target target : sorted) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    96
            if (target.getName().equals(desiredTarget)) {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
    97
                return target;
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    98
            }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    99
        }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   100
        throw new BuildException("Could not find target matching "
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   101
                + desiredTarget + "\n");
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   102
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   103
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   104
    /**
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   105
     * If a target defined outside helium are calling a private Helium target
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   106
     * then print warning
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   107
     * 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   108
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   109
    @SuppressWarnings("unchecked")
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   110
    public void targetCallsHeliumTarget(Target target, Project project) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   111
        String location = target.getLocation().getFileName();
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   112
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   113
        try {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   114
            String heliumpath = new File(project.getProperty("helium.dir"))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   115
                    .getCanonicalPath();
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   116
            String targetpath = new File(location).getCanonicalPath();
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   117
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   118
            if (!targetpath.contains(heliumpath)) {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   119
                ArrayList<String> antcallTargets = new ArrayList<String>();
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   120
                Visitor visitorTarget = new AntTargetVisitor(antcallTargets,
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   121
                        project);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   122
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   123
                Element element = findTargetElement(target, project);
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   124
                if (element != null) {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   125
                    element.accept(visitorTarget);
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   126
                }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   127
                for (String depTargetString : antcallTargets) {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   128
                    String[] array = { depTargetString };
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   129
                    try {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   130
                        Target depTarget = findTarget(depTargetString, project,
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   131
                                array);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   132
                        targetCallsHeliumTarget(depTarget, project);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   133
                    } catch (BuildException x) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   134
                        // We are Ignoring the errors as no need to fail the
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   135
                        // build.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   136
                        log(
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   137
                                "Exception occured while target defined outside helium are calling a private Helium target "
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   138
                                        + x.toString(), Project.MSG_DEBUG);
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   139
                        x = null;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   140
                    }
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   141
                }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   142
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   143
                for (Enumeration<String> depsEnum = target.getDependencies(); depsEnum
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   144
                        .hasMoreElements();) {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   145
                    String depTargetString = depsEnum.nextElement();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   146
                    String[] array = { depTargetString };
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   147
                    try {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   148
                        Target depTarget = findTarget(depTargetString, project,
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   149
                                array);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   150
                        targetCallsHeliumTarget(depTarget, project);
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   151
                    } catch (BuildException x) {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   152
                        // We are Ignoring the errors as no need to fail the
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   153
                        // build.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   154
                        log(
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   155
                                "Exception occured while target defined outside helium are calling a private Helium target "
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   156
                                        + x.toString(), Project.MSG_DEBUG);
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   157
                        x = null;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   158
                    }
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   159
                }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   160
            } else {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   161
                checkIfTargetPrivate(target, project);
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   162
            }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   163
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   164
        } catch (IOException e) {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   165
            // We are Ignoring the errors as no need to fail the build.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   166
            log(
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   167
                    "IOException occured while target defined outside helium are calling a private Helium target "
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   168
                            + e.getMessage(), Project.MSG_DEBUG);
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   169
            e.printStackTrace();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   170
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   171
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   172
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   173
    private class AntTargetVisitor extends VisitorSupport {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   174
        private List<String> targetList;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   175
        private Project project;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   176
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   177
        public AntTargetVisitor(List<String> targetList, Project project) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   178
            this.targetList = targetList;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   179
            this.project = project;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   180
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   181
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   182
        public void visit(Element node) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   183
            String name = node.getName();
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   184
            if (name.equals("antcall") || name.equals("runtarget")) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   185
                String text = node.attributeValue("target");
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   186
                extractTarget(text);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   187
            }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   188
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   189
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   190
        private void extractTarget(String text) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   191
            String iText = project.replaceProperties(text);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   192
            targetList.add(iText);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   193
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   194
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   195
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   196
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   197
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   198
     * Find the xml Element for the target
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   199
     * 
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   200
     */
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   201
    @SuppressWarnings("unchecked")
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   202
    public Element findTargetElement(Target target, Project project) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   203
        SAXReader xmlReader = new SAXReader();
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   204
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   205
        Document antDoc = null;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   206
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   207
        String location = target.getLocation().getFileName();
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   208
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   209
        try {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   210
            File file = new File(location);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   211
            antDoc = xmlReader.read(file);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   212
        } catch (DocumentException e) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   213
            // We are Ignoring the errors as no need to fail the build.
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   214
            log("Not able read the XML file. " + e.getMessage(),
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   215
                    Project.MSG_WARN);
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   216
        }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   217
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   218
        String projectName = antDoc.valueOf("/project/@name");
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   219
        for (Iterator<Element> iterator = antDoc.selectNodes("//target")
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   220
                .iterator(); iterator.hasNext();) {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   221
            Element element = iterator.next();
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   222
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   223
            String targetName = element.attributeValue("name");
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   224
            if (targetName.equals(target.getName())
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   225
                    || (projectName + "." + targetName)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   226
                            .equals(target.getName())) {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   227
                return element;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   228
            }
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   229
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   230
        return null;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   231
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   232
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   233
    /**
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   234
     * If target has comment that says it is private them print warning
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   235
     * 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   236
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   237
    @SuppressWarnings("unchecked")
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   238
    public void checkIfTargetPrivate(Target target, Project project) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   239
        Element targetElement = findTargetElement(target, project);
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   240
        if (targetElement != null) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   241
            List<Node> children = targetElement
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   242
                    .selectNodes("preceding-sibling::node()");
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   243
            if (children.size() > 0) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   244
                // Scan past the text nodes, which are most likely whitespace
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   245
                int index = children.size() - 1;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   246
                Node child = children.get(index);
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   247
                while (index > 0 && child.getNodeType() == Node.TEXT_NODE) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   248
                    index--;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   249
                    child = (Node) children.get(index);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   250
                }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   251
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   252
                // Check if there is a comment node
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   253
                String commentText = null;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   254
                if (child.getNodeType() == Node.COMMENT_NODE) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   255
                    Comment macroComment = (Comment) child;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   256
                    commentText = macroComment.getStringValue().trim();
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   257
                    // log(macroName + " comment: " + commentText,
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   258
                    // Project.MSG_DEBUG);
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   259
                }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   260
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   261
                if (commentText != null) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   262
                    if (commentText.contains("Private:")) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   263
                        output
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   264
                                .add("Warning: "
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   265
                                        + target.getName()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   266
                                        + " is private and should only be called by helium");
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   267
                    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   268
                    if (commentText.contains("<deprecated>")) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   269
                        output.add("Warning: " + target.getName() + "\n"
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   270
                                + commentText);
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   271
                    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   272
                }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   273
            }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   274
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   275
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   276
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   277
    /**
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   278
     * To check, is the private properties are overridden by customers.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   279
     * 
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   280
     * @param project
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   281
     */
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   282
    public void checkTargetsProperties(Project project) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   283
        try {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   284
            String heliumpath = new File(project.getProperty("helium.dir"))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   285
                    .getCanonicalPath();
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   286
            com.nokia.helium.ant.data.Database db = new com.nokia.helium.ant.data.Database(
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   287
                    project, "private");
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   288
            ArrayList<String> customerProps = getCustomerProperties(project);
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   289
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   290
            for (PropertyMeta propertyMeta : db.getProperties()) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   291
                if (propertyMeta.getType().equals("boolean"))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   292
                {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   293
                    String value = project.getProperty(propertyMeta.getName());
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   294
                    if (value != null && !value.equals("true") && !value.equals("false"))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   295
                    {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   296
                        output.add("Warning: " + propertyMeta.getName() + " property is boolean type and not set to true or false, value is " + value);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   297
                    }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   298
                }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   299
            }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   300
            for (PropertyCommentMeta propertyMeta : db.getCommentProperties()) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   301
                if (propertyMeta.getType().equals("boolean"))
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   302
                {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   303
                    String value = project.getProperty(propertyMeta.getName());
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   304
                    if (value != null && !value.equals("true") && !value.equals("false"))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   305
                    {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   306
                        output.add("Warning: " + propertyMeta.getName() + " property is boolean type and not set to true or false, value is " + value);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   307
                    }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   308
                }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   309
            }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   310
            for (PropertyMeta propertyMeta : db.getProperties()) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   311
                if (propertyMeta.getLocation().contains(heliumpath)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   312
                        && propertyMeta.getScope().equals("private")
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   313
                        && customerProps.contains(propertyMeta.getName())) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   314
                    output.add("Warning: " + propertyMeta.getName()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   315
                            + " property has been overridden");
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   316
                }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   317
            }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   318
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   319
            for (PropertyCommentMeta propertyCommentMeta : db.getCommentProperties()) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   320
                if (propertyCommentMeta.getLocation().contains(heliumpath)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   321
                        && propertyCommentMeta.getScope().equals("private")
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   322
                        && customerProps
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   323
                                .contains(propertyCommentMeta.getName())) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   324
                    output.add("Warning: " + propertyCommentMeta.getName()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   325
                            + " property has been overridden");
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   326
                }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   327
            }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   328
        } catch (IOException e) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   329
            e.printStackTrace();
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   330
        }
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   331
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   332
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   333
    /**
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   334
     * To display the warnings for deprecated properties.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   335
     * 
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   336
     * @param project
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   337
     */
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   338
    public void checkDeprecatedProperties(Project project) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   339
        try {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   340
            String heliumpath = new File(project.getProperty("helium.dir"))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   341
                    .getCanonicalPath();
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   342
            com.nokia.helium.ant.data.Database db = new com.nokia.helium.ant.data.Database(
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   343
                    project, "private");
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   344
            ArrayList<String> customerProps = getCustomerProperties(project);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   345
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   346
            for (PropertyMeta propertyMeta : db.getProperties()) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   347
                if (propertyMeta.getLocation().contains(heliumpath)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   348
                        && (!propertyMeta.getDeprecated().equals(""))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   349
                        && customerProps.contains(propertyMeta.getName())) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   350
                    output.add("Warning: "
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   351
                            + propertyMeta.getName()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   352
                            + " property has been deprecated "
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   353
                            + propertyMeta.getDeprecated()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   354
                            + "."
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   355
                            + propertyMeta.getSummary().substring(
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   356
                                    propertyMeta.getSummary().lastIndexOf(
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   357
                                            DEPRECATED)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   358
                                            + DEPRECATED.length()));
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   359
                }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   360
            }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   361
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   362
            for (PropertyCommentMeta propertyCommentMeta : db
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   363
                    .getCommentProperties()) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   364
                if (propertyCommentMeta.getLocation().contains(heliumpath)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   365
                        && (!propertyCommentMeta.getDeprecated().equals(""))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   366
                        && customerProps
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   367
                                .contains(propertyCommentMeta.getName())) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   368
                    output.add("Warning: "
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   369
                            + propertyCommentMeta.getName()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   370
                            + " property has been deprecated "
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   371
                            + propertyCommentMeta.getDeprecated()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   372
                            + "."
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   373
                            + propertyCommentMeta.getSummary().substring(
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   374
                                    propertyCommentMeta.getSummary()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   375
                                            .lastIndexOf(DEPRECATED)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   376
                                            + DEPRECATED.length()));
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   377
                }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   378
            }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   379
        } catch (IOException e) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   380
            e.printStackTrace();
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   381
        }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   382
    }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   383
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   384
    @SuppressWarnings("unchecked")
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   385
    public ArrayList<String> getCustomerProperties(Project project) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   386
        ArrayList<String> props = new ArrayList<String>();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   387
        Database db = new Database(null, null, null);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   388
        try {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   389
            String heliumpath = new File(project.getProperty("helium.dir"))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   390
                    .getCanonicalPath();
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   391
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   392
            for (Object object : db.getAntFiles(project)) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   393
                String antFile = (String) object;
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   394
                antFile = new File(antFile).getCanonicalPath();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   395
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   396
                if (!antFile.contains(heliumpath)) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   397
                    SAXReader xmlReader = new SAXReader();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   398
                    Document antDoc = xmlReader.read(new File(antFile));
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   399
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   400
                    List<Element> propertyNodes = antDoc
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   401
                            .selectNodes("//property | //param");
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   402
                    for (Element propertyNode : propertyNodes) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   403
                        props.add(propertyNode.attributeValue("name"));
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   404
                    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   405
                }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   406
            }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   407
        } catch (IOException e) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   408
            // We are Ignoring the errors as no need to fail the build.
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   409
            log("IOException: Not able read the Customer Properties "
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   410
                    + e.getMessage(), Project.MSG_WARN);
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   411
        } catch (DocumentException e) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   412
            // We are Ignoring the errors as no need to fail the build.
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   413
            log("DocumentException: Not able read the Customer Properties "
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   414
                    + e.getMessage(), Project.MSG_WARN);
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   415
        }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   416
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   417
        return props;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   418
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   419
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   420
}