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.7
Committed: Wed Mar 14 23:25:29 2001 UTC (23 years, 2 months ago) by tdb
Branch: MAIN
Changes since 1.6: +7 -7 lines
Log Message:
The whole server package structure has been changed.
Old Package: uk.ac.ukc.iscream.*
New Package: uk.org.iscream.*

File Contents

# User Rev Content
1 tdb 1.1 //---PACKAGE DECLARATION---
2 tdb 1.7 package uk.org.iscream.client;
3 tdb 1.1
4     //---IMPORTS---
5 tdb 1.7 import uk.org.iscream.componentmanager.*;
6     import uk.org.iscream.core.*;
7     import uk.org.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.7 * @version $Id: WebFeeder.java,v 1.6 2001/03/08 23:26:03 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.7 public static final String REVISION = "$Revision: 1.6 $";
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 tdb 1.7 * This uses the uk.org.iscream.util.FormatName class
180 tdb 1.1 * 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     }