buildframework/helium/sf/java/sbs/src/com/nokia/helium/sbs/ant/SBSBuildList.java
author wbernard
Fri, 13 Aug 2010 14:59:05 +0300
changeset 628 7c4a911dc066
parent 587 85df38eb4012
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.sbs.ant;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    19
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 587
diff changeset
    20
import java.util.HashMap;
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    21
import java.util.Hashtable;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    22
import java.util.List;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 587
diff changeset
    23
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    24
import org.apache.log4j.Logger;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 587
diff changeset
    25
import org.apache.tools.ant.BuildException;
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 587
diff changeset
    26
import org.apache.tools.ant.Project;
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 587
diff changeset
    27
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 587
diff changeset
    28
import com.nokia.helium.sbs.ant.types.SBSBuild;
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 587
diff changeset
    29
import com.nokia.helium.sbs.ant.types.SBSInput;
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    30
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    31
/**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    32
 * This is the final class to store the sbs build list across the ant configurations.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    33
 */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    34
public final class SBSBuildList {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    35
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    36
    private static HashMap<Object, SBSBuild> sbsBuildMap;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    37
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    38
    private static Logger log = Logger.getLogger(SBSBuildList.class);
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 587
diff changeset
    39
    
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    40
    private SBSBuildList() {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    41
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    42
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    43
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    44
     *  Provides the list of sbsinput for the given configuration name. Process
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    45
     *  all the sbs input and returns the sbsinputlist for matchin configuration name
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    46
     *  from the ant xml file.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    47
     * @param project, ant project for whcih the sbs config needs to be searched for.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    48
     * @param buildName - name of the configuration for which the sbs input list needs
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    49
     * to be obtained.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    50
     * @return list of sbs input for which the raptor needs to be executed one after another.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    51
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    52
    public static List<SBSInput> getSBSInputList(Project project, String buildName) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    53
        if (sbsBuildMap == null) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    54
            initialize(project);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    55
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    56
        SBSBuild sbsBuild = sbsBuildMap.get(buildName);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    57
        if (sbsBuild == null) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    58
            throw new BuildException("Config name : " + buildName + " is not valid");
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    59
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    60
        List<SBSInput> retList = null;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    61
        if (sbsBuild != null) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    62
            retList = sbsBuild.getSBSInputList();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    63
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    64
        return retList;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    65
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    66
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    67
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    68
     *  Internal function to initialize the sbsbuild configuration to the hashmap.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    69
     * @param project, ant project for whcih the sbs config needs to be searched for.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    70
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    71
    private static void initialize(Project project) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    72
        Hashtable references = project.getReferences();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    73
        sbsBuildMap = new HashMap<Object, SBSBuild>();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    74
        for (Object key : references.keySet()) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    75
            Object sbsBuildObject = references.get(key);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    76
            if ( sbsBuildObject != null && sbsBuildObject instanceof SBSBuild) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    77
                sbsBuildMap.put(key, (SBSBuild)sbsBuildObject);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    78
            }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    79
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    80
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    81
}