| /* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under |
| * the terms of the Common Public License v1.0 which accompanies this distribution, |
| * and is available at http://www.eclipse.org/legal/cpl-v10.html |
| * |
| * $Id: IItemMetadata.java,v 1.1.1.1 2004/05/09 16:57:37 vlad_r Exp $ |
| */ |
| package com.vladium.emma.report; |
| |
| // ---------------------------------------------------------------------------- |
| /** |
| * @author Vlad Roubtsov, (C) 2003 |
| */ |
| public |
| interface IItemMetadata |
| { |
| // public: ................................................................ |
| |
| // note: order is in sync with Factory init code |
| int TYPE_ID_ALL = 0; |
| int TYPE_ID_PACKAGE = 1; |
| int TYPE_ID_SRCFILE = 2; |
| int TYPE_ID_CLASS = 3; |
| int TYPE_ID_METHOD = 4; |
| |
| int getTypeID (); |
| String getTypeName (); |
| |
| /** |
| * Using a long is only ok for less than 64 global attributes, but this limit |
| * seems ok for a long time to come. |
| * |
| * @return bitmask for valid attributes |
| */ |
| long getAttributeIDs (); |
| |
| abstract class Factory |
| { |
| public static IItemMetadata getTypeMetadata (final int typeID) |
| { |
| if ((typeID < TYPE_ID_ALL) || (typeID > TYPE_ID_METHOD)) |
| throw new IllegalArgumentException ("invalid type ID: " + typeID); |
| |
| return METADATA [typeID]; |
| } |
| |
| public static IItemMetadata [] getAllTypes () |
| { |
| return METADATA; |
| } |
| |
| private Factory () {} |
| |
| |
| private static final IItemMetadata [] METADATA; // set in <clinit> |
| |
| static |
| { |
| // this establishes the mapping TYPE_ID_xxx->metadata for type xxx: |
| |
| METADATA = new IItemMetadata [] |
| { |
| AllItem.getTypeMetadata (), |
| PackageItem.getTypeMetadata (), |
| SrcFileItem.getTypeMetadata (), |
| ClassItem.getTypeMetadata (), |
| MethodItem.getTypeMetadata (), |
| }; |
| } |
| |
| } // end of nested class |
| |
| |
| } // end of interface |
| // ---------------------------------------------------------------------------- |