buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/StatusAndLogListener.java
author wbernard
Wed, 23 Dec 2009 19:29:07 +0200
changeset 179 d8ac696cc51f
permissions -rw-r--r--
helium_7.0-r14027
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
179
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     1
/*
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     2
* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     3
* All rights reserved.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     4
* This component and the accompanying materials are made available
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     6
* which accompanies this distribution, and is available
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     8
*
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     9
* Initial Contributors:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    11
*
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    12
* Contributors:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    13
*
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    14
* Description:  
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    15
*
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    16
*/
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    17
package com.nokia.helium.logger.ant.listener;
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    18
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    19
import java.util.Vector;
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    20
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    21
import org.apache.tools.ant.BuildEvent;
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    22
import org.apache.tools.ant.BuildListener;
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    23
import org.apache.tools.ant.SubBuildListener;
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    24
import org.apache.tools.ant.Project;
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    25
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    26
/**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    27
 * <code>StatusAndLogListener</code> implements {@link BuildListener} and
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    28
 * listens to build events in particularly for activities such as ant logging
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    29
 * and displaying build stage summary at the end of build process.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    30
 * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    31
 */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    32
public class StatusAndLogListener implements BuildListener, SubBuildListener {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    33
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    34
    private static Vector<Handler> handlers = new Vector<Handler>();
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    35
    private static Project project;
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    36
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    37
    /**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    38
     * Default constructor
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    39
     */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    40
    public StatusAndLogListener() {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    41
    }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    42
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    43
    /**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    44
     * Signals that the last target has finished. This event will still be fired
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    45
     * if an error occurred during the build.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    46
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    47
     * @param event
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    48
     *            An event with any relevant extra information. Must not be
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    49
     *            <code>null</code>.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    50
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    51
     * @see BuildEvent#getException()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    52
     */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    53
    public void buildStarted(BuildEvent event) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    54
        project = event.getProject();
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    55
        for (Handler handler : handlers) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    56
            handler.handleBuildStarted(event);
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    57
        }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    58
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    59
    }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    60
    /**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    61
     * Signals that a build has started. This event is fired before any targets
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    62
     * have started.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    63
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    64
     * @param event
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    65
     *            An event with any relevant extra information. Must not be
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    66
     *            <code>null</code>.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    67
     */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    68
    public void buildFinished(BuildEvent event) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    69
        for ( Handler handler : handlers ) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    70
            handler.handleBuildFinished( event );
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    71
        }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    72
    }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    73
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    74
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    75
    /**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    76
     * Signals that a target is starting.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    77
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    78
     * @param event
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    79
     *            An event with any relevant extra information. Must not be
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    80
     *            <code>null</code>.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    81
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    82
     * @see BuildEvent#getTarget()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    83
     */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    84
    public void targetStarted(BuildEvent event) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    85
        for (Handler handler : handlers) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    86
            handler.handleTargetStarted(event);
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    87
        }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    88
    }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    89
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    90
    /**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    91
     * Signals that a target has finished. This event will still be fired if an
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    92
     * error occurred during the build.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    93
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    94
     * @param event
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    95
     *            An event with any relevant extra information. Must not be
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    96
     *            <code>null</code>.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    97
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    98
     * @see BuildEvent#getException()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    99
     */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   100
    public void targetFinished(BuildEvent event) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   101
        for (Handler handler : handlers) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   102
            handler.handleTargetFinished(event);
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   103
        }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   104
    }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   105
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   106
    /**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   107
     * Signals that a task is starting.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   108
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   109
     * @param event
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   110
     *            An event with any relevant extra information. Must not be
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   111
     *            <code>null</code>.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   112
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   113
     * @see BuildEvent#getTask()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   114
     */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   115
    public void taskStarted(BuildEvent event) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   116
        // implement if needed
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   117
    }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   118
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   119
    /**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   120
     * Signals that a task has finished. This event will still be fired if an
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   121
     * error occurred during the build.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   122
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   123
     * @param event
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   124
     *            An event with any relevant extra information. Must not be
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   125
     *            <code>null</code>.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   126
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   127
     * @see BuildEvent#getException()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   128
     */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   129
    public void taskFinished(BuildEvent event) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   130
        // implement if needed
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   131
    }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   132
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   133
    /**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   134
     * Signals that a subbuild has started. This event is fired before any targets have started. 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   135
     * @param event
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   136
     */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   137
    public void subBuildStarted(BuildEvent event) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   138
         
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   139
    }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   140
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   141
    /**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   142
     * Signals that the last target has finished. This event will still be fired if an error occurred during the build. 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   143
     * @param event
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   144
     */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   145
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   146
    public void subBuildFinished(BuildEvent event) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   147
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   148
    }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   149
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   150
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   151
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   152
    /**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   153
     * Signals a message logging event.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   154
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   155
     * @param event
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   156
     *            An event with any relevant extra information. Must not be
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   157
     *            <code>null</code>.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   158
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   159
     * @see BuildEvent#getMessage()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   160
     * @see BuildEvent#getException()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   161
     * @see BuildEvent#getPriority()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   162
     */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   163
    public void messageLogged(BuildEvent event) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   164
        // implement if needed
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   165
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   166
    }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   167
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   168
    /**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   169
     * Register the given handler.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   170
     * 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   171
     * @param handler
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   172
     *            is the handler to register
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   173
     */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   174
    public static void register ( Handler handler ) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   175
        handlers.add( handler );
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   176
    }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   177
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   178
    /**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   179
     * Return root project name.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   180
     * @return
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   181
     */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   182
    public static Project getProject() {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   183
      return project;   
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   184
    }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   185
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   186
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   187
    /**
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   188
     * Check and return required type handler.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   189
     * @param handlerType
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   190
     * @return
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   191
     */
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   192
    public static Handler getHandler(Class handlerType) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   193
        for (Handler handler : handlers) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   194
            if (handlerType.isInstance(handler)) {
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   195
                return handler;
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   196
            }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   197
        }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   198
        return null;
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   199
    }
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   200
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   201
}