buildframework/helium/sf/java/antdata/src/com/nokia/helium/ant/data/MacroMeta.java
author wbernard
Fri, 13 Aug 2010 14:59:05 +0300
changeset 628 7c4a911dc066
parent 588 c7c26511138f
child 645 b8d81fa19e7d
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
/*
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     2
 * Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     3
 * All rights reserved.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     5
 * under the terms of the License "Eclipse Public License v1.0"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     8
 *
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     9
 * Initial Contributors:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    11
 *
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    12
 * Contributors:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    13
 *
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    14
 * Description: 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    15
 *
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    16
 */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    17
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    18
package com.nokia.helium.ant.data;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    19
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    20
import java.util.List;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    21
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    22
import org.dom4j.Element;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    23
import org.dom4j.Node;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    24
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    25
/**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    26
 * An Ant macro.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    27
 */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    28
public class MacroMeta extends TaskContainerMeta {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    29
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    30
    public MacroMeta(AntObjectMeta parent, Element objNode) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    31
        super(parent, objNode);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    32
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    33
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    34
    public String getDescription() {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    35
        return getAttr("description");
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    36
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    37
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    38
    @SuppressWarnings("unchecked")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    39
    public String getUsage() {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    40
        String macroName = getName();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    41
        List<Node> statements = getNode().selectNodes(
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    42
                "//scriptdef[@name='" + macroName + "']/attribute | //macrodef[@name='" + macroName + "']/attribute");
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    43
        String usage = "";
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    44
        for (Node statement : statements) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    45
            String defaultval = statement.valueOf("@default");
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    46
            if (defaultval.equals("")) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    47
                defaultval = "value";
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    48
            }
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
    49
//            else {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
    50
//                defaultval = "<i>" + defaultval + "</i>";
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
    51
//            }
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    52
            usage = usage + statement.valueOf("@name") + "=\"" + defaultval + "\"" + " ";
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    53
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    54
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    55
        String macroElements = "";
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    56
        statements = getNode().selectNodes(
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    57
                "//scriptdef[@name='" + macroName + "']/element | //macrodef[@name='" + macroName + "']/element");
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    58
        for (Node statement : statements) {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
    59
            macroElements = "        <" + statement.valueOf("@name") + "/>\n" + macroElements;
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    60
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    61
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    62
        if (macroElements.equals("")) {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
    63
            return "<hlm:" + macroName + " " + usage + "/>";
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    64
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    65
        else {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
    66
            return "<hlm:" + macroName + " " + usage + ">\n" + macroElements + "    </hlm:" + macroName + ">";
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    67
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    68
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    69
}