ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/experimental/agents/FormatName.java
Revision: 1.1
Committed: Fri May 4 02:04:35 2001 UTC (23 years, 6 months ago) by ajm
Branch: MAIN
CVS Tags: HEAD
Log Message:
Loads of new framework but far from complete.

The BasicAgent class is as it says, a basic agent, with ability to be run from the command line to fire it into an agentstation.

AgentStations now have support for adding and removing agents and support for multiple listeners.  Also initial support for peer agent stations.  Attempted support at peer -> peer agent transfer, but run into problems.

Still no bytecode transfer, but location and method has been figured out.

The AgentSystem class is now the bootstrap class for an agent station.  It brings up the AgentStation (which is now singleton) and the Logger (also singleton - using standard i-scream logging techniques).  It is possible to specify a peer station that the booting agent station should connect to.

Initial TODO:

	agent class loader
	agent bytecode transfer
	solve peer -> peer problems - possibly by creating extra socket to send agent, but shouldn't really be needed

File Contents

# User Rev Content
1 ajm 1.1 //---PACKAGE DECLARATION---
2     //package uk.org.iscream.util;
3    
4     //---IMPORTS---
5     import java.util.Date;
6     import java.text.DateFormat;
7     import java.util.Locale;
8    
9     /**
10     * This class provides static methods to format the
11     * name of a calling object. It's main use is by
12     * the various objects within the system to create
13     * a toString String to send to the logger.
14     *
15     * @author $Author: tdb1 $
16     * @version $Id: FormatName.java,v 1.11 2001/03/26 15:33:59 tdb1 Exp $
17     */
18     public class FormatName {
19    
20     //---FINAL ATTRIBUTES---
21    
22     /**
23     * An array of names of verbosity levels.
24     * Thus logging messages are now "classed" by the level
25     */
26     private final static String[] VERBOSITY_NAMES = {"FATAL ", "ERROR ", "WARNING", "SYSMSG ", "SYSINIT", "DEBUG "};
27    
28     //---STATIC / FINAL STATIC METHODS---
29    
30     /**
31     * This method takes a set of information about the calling
32     * class and constructs a tidy String name to be returned.
33     * This is of use to the override of the toString() as
34     * implemented by most of the iscream objects.
35     *
36     * @param friendlyName the configured name of the instance of the calling component the class is in (eg "filter1")
37     * @param className the class name of the calling class, as obtained by getClass().getName()
38     * @param revision the CVS Revision number for the calling class
39     *
40     * @return an iscream standard name to be used as a toString()
41     */
42     public static String getName(String friendlyName, String className, String revision) {
43     if (friendlyName == null && className == null) {
44     return "{static(v" + revision.substring(11, revision.length() - 2) + ")}";
45     } else if (friendlyName == null) {
46     return "{"+ tidyClassName(className) + "(v" + revision.substring(11, revision.length() - 2) + ")}";
47     } else if (className == null) {
48     return friendlyName + "{static(v" + revision.substring(11, revision.length() - 2) + ")}";
49     } else {
50     return friendlyName + "{"+ tidyClassName(className) + "(v" + revision.substring(11, revision.length() - 2) + ")}";
51     }
52     }
53    
54     /**
55     * This method generates a nicely formatted line for the log,
56     * including the date/time and the source of the message. The date
57     * and time are formatted using the DateFormat class, and the source
58     * class is formatted using the toString() method found in every
59     * source file. This is then prepended to the message and returned.
60     *
61     * @param source A string representation of the calling object.
62     * @param verbosity The verbosity of the message.
63     * @param message The message to be logged.
64     * @return The string to be written to the log.
65     */
66     public static String formatLogLine(String source, int verbosity, String message){
67     String date = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM).format(new Date());
68     return "[" + date + "] [" + VERBOSITY_NAMES[verbosity] + "] " + source + ": " + message;
69     }
70    
71     /**
72     * If the class name begins with uk.org.iscream
73     * this method will trim it off, otherwise it
74     * leaves the string unchanged.
75     *
76     * @param className the name of a class
77     *
78     * @return the tidy version of it
79     */
80     private static String tidyClassName(String className) {
81     String prefix = "uk.org.iscream";
82     if (className.startsWith(prefix)) {
83     return className.substring(prefix.length()+1);
84     }
85     return className;
86     }
87    
88     //---CONSTRUCTORS---
89    
90     /**
91     * A private constructor ensures an instance of this
92     * class CANNOT be created.
93     */
94     private FormatName() {
95     // do nothing on purpose!
96     }
97    
98     //---PUBLIC METHODS---
99    
100     //---PRIVATE/PROTECTED METHODS---
101    
102     //---ACCESSOR/MUTATOR METHODS---
103    
104     //---ATTRIBUTES---
105    
106     //---STATIC ATTRIBUTES---
107    
108     }