ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/client/WebFeeder.java
Revision: 1.6
Committed: Thu Mar 8 23:26:03 2001 UTC (23 years, 2 months ago) by tdb
Branch: MAIN
Changes since 1.5: +3 -3 lines
Log Message:
Alert data is appended. This is not currently the best way to do it, as we have
no way of "cleaning" up. This will be discussed and resolved later on.

File Contents

# User Rev Content
1 tdb 1.1 //---PACKAGE DECLARATION---
2     package uk.ac.ukc.iscream.client;
3    
4     //---IMPORTS---
5     import uk.ac.ukc.iscream.componentmanager.*;
6     import uk.ac.ukc.iscream.core.*;
7     import uk.ac.ukc.iscream.util.*;
8 tdb 1.2 import java.io.*;
9 tdb 1.1
10     /**
11     * Provides a feed to the webpage system.
12     *
13 tdb 1.2 * @author $Author: tdb1 $
14 tdb 1.6 * @version $Id: WebFeeder.java,v 1.5 2001/03/08 23:20:06 tdb1 Exp $
15 tdb 1.1 */
16     public class WebFeeder {
17    
18     //---FINAL ATTRIBUTES---
19    
20     /**
21     * The current CVS revision of this class
22     */
23 tdb 1.6 public static final String REVISION = "$Revision: 1.5 $";
24 tdb 1.1
25     //---STATIC METHODS---
26    
27     /**
28     * Return a reference to the single class.
29     * Construct it if it does not already exist, otherwise just return the reference.
30     */
31     public static WebFeeder getInstance() {
32     if (_instance == null){
33     _instance = new WebFeeder();
34     }
35     return _instance;
36     }
37    
38     //---CONSTRUCTORS---
39    
40     private WebFeeder() {
41     // do something, or nothing.. but must be private
42     }
43    
44     //---PUBLIC METHODS---
45    
46     // TO BE COMPLETED
47     // The following two methods should process and save
48     // XMLPackets and Alerts, in a directory structure that
49     // has been defined by the web page designer.
50    
51     // There may also be need to have a Thread to grab any
52     // required config (groups, "nice names, etc) and dump
53     // that to a file.
54    
55     public void receiveXMLPacket(XMLPacket packet) {
56 tdb 1.4 String packetType = packet.getParam("packet.attributes.type");
57     if(packetType == null || !packetType.equals("data")) {
58     // bail out, without warning
59     // this is probably a heartbeat or similar
60     return;
61     }
62 tdb 1.2 // get config proxy
63     ConfigurationProxy cp = ConfigurationProxy.getInstance();
64     // get file locations
65     String rootPath, latestSubDir, latestFileName;
66     try {
67     rootPath = cp.getProperty("WebFeeder", "WebFeeder.rootPath");
68     latestSubDir = cp.getProperty("WebFeeder", "WebFeeder.latestSubDir");
69     latestFileName = cp.getProperty("WebFeeder", "WebFeeder.latestFileName");
70     } catch (PropertyNotFoundException e) {
71     _logger.write(this.toString(), Logger.ERROR, "Failed to get config for Latest Data: "+e);
72     // bail out
73     return;
74     }
75     // get raw data
76     String data = packet.printAll();
77 tdb 1.3 String hostname = packet.getParam("packet.attributes.machine_name");
78 tdb 1.2 // set paths
79     String destDir = rootPath+"/"+latestSubDir+"/"+hostname;
80     String destFile = destDir+"/"+latestFileName;
81 tdb 1.3 // try to create directory
82 tdb 1.2 File outDir = new File(destDir);
83 tdb 1.3 if(!outDir.exists()) {
84     if(!outDir.mkdirs()) {
85     // didn't exist, and we couldn't make it
86     _logger.write(this.toString(), Logger.ERROR, "Failed to create directory: "+outDir.getPath());
87     // bail out
88     return;
89 tdb 1.2 }
90 tdb 1.3 }
91     // directory has been made, check file exists
92     File outFile = new File(destFile);
93     if(!outFile.exists()) {
94     try {
95     outFile.createNewFile();
96     } catch (IOException e) {
97     _logger.write(this.toString(), Logger.ERROR, "Failed to create file: "+e);
98     // bail out
99     return;
100     }
101     }
102     // file should now exist
103     if(outFile.canWrite()) {
104     PrintWriter out;
105     try {
106     out = new PrintWriter(new FileWriter(outFile));
107     out.println(data);
108     out.close();
109     } catch (IOException e) {
110     _logger.write(this.toString(), Logger.ERROR, "Failed to write file: "+e);
111 tdb 1.2 }
112     }
113     else {
114 tdb 1.3 _logger.write(this.toString(), Logger.ERROR, "File not writeable: "+outFile.getPath());
115 tdb 1.2 }
116 tdb 1.1 }
117    
118     public void receiveAlert(Alert alert) {
119 tdb 1.5 // get config proxy
120     ConfigurationProxy cp = ConfigurationProxy.getInstance();
121     // get file locations
122     String rootPath, alertSubDir, alertFileName;
123     try {
124     rootPath = cp.getProperty("WebFeeder", "WebFeeder.rootPath");
125     alertSubDir = cp.getProperty("WebFeeder", "WebFeeder.alertSubDir");
126     alertFileName = cp.getProperty("WebFeeder", "WebFeeder.alertFileName");
127     } catch (PropertyNotFoundException e) {
128     _logger.write(this.toString(), Logger.ERROR, "Failed to get config for Alert Data: "+e);
129     // bail out
130     return;
131     }
132     // get raw data
133     String data = alert.printAll();
134     String hostname = alert.getSource();
135     // set paths
136     String destDir = rootPath+"/"+alertSubDir+"/"+hostname;
137     String destFile = destDir+"/"+alertFileName;
138     // try to create directory
139     File outDir = new File(destDir);
140     if(!outDir.exists()) {
141     if(!outDir.mkdirs()) {
142     // didn't exist, and we couldn't make it
143     _logger.write(this.toString(), Logger.ERROR, "Failed to create directory: "+outDir.getPath());
144     // bail out
145     return;
146     }
147     }
148     // directory has been made, check file exists
149     File outFile = new File(destFile);
150     if(!outFile.exists()) {
151     try {
152     outFile.createNewFile();
153     } catch (IOException e) {
154     _logger.write(this.toString(), Logger.ERROR, "Failed to create file: "+e);
155     // bail out
156     return;
157     }
158     }
159     // file should now exist
160     if(outFile.canWrite()) {
161     PrintWriter out;
162     try {
163 tdb 1.6 out = new PrintWriter(new FileWriter(outFile.getPath(), true));
164 tdb 1.5 out.println(data);
165     out.close();
166     } catch (IOException e) {
167     _logger.write(this.toString(), Logger.ERROR, "Failed to write file: "+e);
168     }
169     }
170     else {
171     _logger.write(this.toString(), Logger.ERROR, "File not writeable: "+outFile.getPath());
172     }
173 tdb 1.1 }
174    
175     /**
176     * Overrides the {@link java.lang.Object#toString() Object.toString()}
177     * method to provide clean logging (every class should have this).
178     *
179     * This uses the uk.ac.ukc.iscream.util.FormatName class
180     * to format the toString()
181     *
182     * @return the name of this class and its CVS revision
183     */
184     public String toString() {
185     return FormatName.getName(
186     _name,
187     getClass().getName(),
188     REVISION);
189     }
190    
191     //---PRIVATE METHODS---
192    
193     //---ACCESSOR/MUTATOR METHODS---
194    
195     //---ATTRIBUTES---
196    
197     /**
198     * This is the friendly identifier of the
199     * component this class is running in.
200     * eg, a Filter may be called "filter1",
201     * If this class does not have an owning
202     * component, a name from the configuration
203     * can be placed here. This name could also
204     * be changed to null for utility classes.
205     */
206     private String _name = ClientMain.NAME;
207    
208     /**
209     * This holds a reference to the
210     * system logger that is being used.
211     */
212     private Logger _logger = ReferenceManager.getInstance().getLogger();
213    
214     //---STATIC ATTRIBUTES---
215    
216     /**
217     * A reference to the single instance of this class
218     */
219     private static WebFeeder _instance;
220    
221     }