1f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved.
2f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project *
3f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * This program and the accompanying materials are made available under
4f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * the terms of the Common Public License v1.0 which accompanies this distribution,
5f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * and is available at http://www.eclipse.org/legal/cpl-v10.html
6f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project *
7f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * $Id: IItem.java,v 1.1.1.1.2.1 2005/06/12 22:43:11 vlad_r Exp $
8f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */
9f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpackage com.vladium.emma.report;
10f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
11f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport java.util.Iterator;
12f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
13f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ----------------------------------------------------------------------------
14f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/**
15f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * @author Vlad Roubtsov, (C) 2003
16f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */
17f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpublic
18f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectinterface IItem
19f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project{
20f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // public: ................................................................
21f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
22f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // TODO: consider making this an abstact class [merge into Item]
23f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
24f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // note: this design does not enforce all items at the same level being of the same 'type' (class, pkg, method, etc)
25f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
26f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    IItem getParent ();
27f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    int getChildCount ();
28f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    Iterator /* IItem */ getChildren ();
29f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    /**
30f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project     *
31f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project     * @param order [null is equivalent to no sort]
32f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project     * @return
33f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project     */
34f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    Iterator /* IItem */ getChildren (ItemComparator /* IItem */ order);
35f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
36f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    String getName ();
37f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    IItemMetadata getMetadata ();
38f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    IItemAttribute getAttribute (int attributeID, int unitsID);
39f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    int getAggregate (int type);
40f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
41f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    void accept (IItemVisitor visitor, Object ctx);
42f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
43f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
44f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // TODO: move these elsewhere and fix gaps
45f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        // WARNING: careful about reordering!
46f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
47f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        // (coverage data) measured in counts:
48f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int COVERAGE_CLASS_COUNT    = 5; // count of class loads
49f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int COVERAGE_METHOD_COUNT   = 4; // count of method entries
50f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
51f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        // (coverage data) measured in counts or instrs:
52f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int COVERAGE_BLOCK_COUNT    = 0; // in count units
53f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int COVERAGE_LINE_COUNT     = 1; // in count units
54f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int COVERAGE_BLOCK_INSTR    = 2; // in instr units
55f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int COVERAGE_LINE_INSTR     = 3; // total line instr coverage, scaled up by PRECISION
56f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
57f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
58f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        // (metadata) measured in counts:
59f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int TOTAL_CLASS_COUNT       = 11;
60f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int TOTAL_METHOD_COUNT      = 10;
61f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
62f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        // (metadata) measured in counts or instrs:
63f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int TOTAL_BLOCK_COUNT       = 6; // in count units
64f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int TOTAL_LINE_COUNT        = 7; // in count units
65f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int TOTAL_BLOCK_INSTR       = 8; // in instr units
66f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        //int TOTAL_LINE_INSTR        = 9; // in instr units
67f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
68f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int TOTAL_SRCFILE_COUNT     = 12;
69f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        //int TOTAL_SRCLINE_COUNT     = 13;
70f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
71f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int NUM_OF_AGGREGATES = TOTAL_SRCFILE_COUNT + 1;
72f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int PRECISION = 100; // BUG_SF988160: increase overflow safety margin for very large projects
73f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
74f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project} // end of interface
75f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ----------------------------------------------------------------------------