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
(Generate patch)

Comparing projects/cms/source/server/uk/org/iscream/cms/server/client/WebFeeder.java (file contents):
Revision 1.1 by tdb, Wed Mar 7 01:55:51 2001 UTC vs.
Revision 1.9 by tdb, Thu Mar 15 04:03:24 2001 UTC

# Line 1 | Line 1
1   //---PACKAGE DECLARATION---
2 < package uk.ac.ukc.iscream.client;
2 > package uk.org.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.*;
5 > import uk.org.iscream.componentmanager.*;
6 > import uk.org.iscream.core.*;
7 > import uk.org.iscream.util.*;
8 > import java.io.*;
9  
10   /**
11   * Provides a feed to the webpage system.
12   *
13 + * !! still needs a routine to "maintain" alerts !!
14 + *
15   * @author  $Author$
16   * @version $Id$
17   */
# Line 38 | Line 41 | public class WebFeeder {
41  
42      private WebFeeder() {
43          // do something, or nothing.. but must be private
44 +        // don't need to cleanup latest data
45 +        
46 +        // -- cleanup old alerts
47 +        // get config proxy
48 +        ConfigurationProxy cp = ConfigurationProxy.getInstance();
49 +        // get file locations
50 +        String rootPath, alertSubDir, alertFileName;
51 +        try {
52 +            // work out where things are
53 +            rootPath = cp.getProperty("WebFeeder", "WebFeeder.rootPath");
54 +            alertSubDir = cp.getProperty("WebFeeder", "WebFeeder.alertSubDir");
55 +            File alerts = new File(rootPath+"/"+alertSubDir);
56 +            File[] contents = alerts.listFiles();
57 +            for(int i=0; i < contents.length; i++) {
58 +                contents[i].delete();
59 +            }
60 +            // cleanup complete
61 +            _logger.write(this.toString(), Logger.DEBUG, "Deleted "+contents.length+" files or directories from: "+rootPath+"/"+alertSubDir);
62 +        } catch (PropertyNotFoundException e) {
63 +            _logger.write(this.toString(), Logger.ERROR, "Failed to cleanup on construction, due to failing to get config for Alert Data: "+e);
64 +            // just leave it at that
65 +        }
66      }
67  
68   //---PUBLIC METHODS---
# Line 52 | Line 77 | public class WebFeeder {
77      // that to a file.
78      
79      public void receiveXMLPacket(XMLPacket packet) {
80 <        // process and save
80 >        String packetType = packet.getParam("packet.attributes.type");
81 >        if(packetType == null || !packetType.equals("data")) {
82 >            // bail out, without warning
83 >            // this is probably a heartbeat or similar
84 >            return;
85 >        }
86 >        // get config proxy
87 >        ConfigurationProxy cp = ConfigurationProxy.getInstance();
88 >        // get file locations
89 >        String rootPath, latestSubDir, latestFileName;
90 >        try {
91 >            rootPath = cp.getProperty("WebFeeder", "WebFeeder.rootPath");
92 >            latestSubDir = cp.getProperty("WebFeeder", "WebFeeder.latestSubDir");
93 >            latestFileName = cp.getProperty("WebFeeder", "WebFeeder.latestFileName");
94 >        } catch (PropertyNotFoundException e) {
95 >            _logger.write(this.toString(), Logger.ERROR, "Failed to get config for Latest Data: "+e);
96 >            // bail out
97 >            return;
98 >        }
99 >        // get raw data
100 >        String data = packet.printAll();
101 >        String hostname = packet.getParam("packet.attributes.machine_name");
102 >        // set paths
103 >        String destDir = rootPath+"/"+latestSubDir+"/"+hostname;
104 >        String destFile = destDir+"/"+latestFileName;
105 >        // try to create directory
106 >        File outDir = new File(destDir);
107 >        if(!outDir.exists()) {
108 >            if(!outDir.mkdirs()) {
109 >                // didn't exist, and we couldn't make it
110 >                _logger.write(this.toString(), Logger.ERROR, "Failed to create directory: "+outDir.getPath());
111 >                // bail out
112 >                return;
113 >            }
114 >        }
115 >        // directory has been made, check file exists
116 >        File outFile = new File(destFile);
117 >        if(!outFile.exists()) {
118 >            try {
119 >                outFile.createNewFile();
120 >            } catch (IOException e) {
121 >                _logger.write(this.toString(), Logger.ERROR, "Failed to create file: "+e);
122 >                // bail out
123 >                return;
124 >            }
125 >        }
126 >        // file should now exist
127 >        if(outFile.canWrite()) {
128 >            PrintWriter out;
129 >            try {
130 >                out = new PrintWriter(new FileWriter(outFile));
131 >                out.println(data);
132 >                out.close();
133 >            } catch (IOException e) {
134 >                _logger.write(this.toString(), Logger.ERROR, "Failed to write file: "+e);
135 >            }
136 >        }
137 >        else {
138 >            _logger.write(this.toString(), Logger.ERROR, "File not writeable: "+outFile.getPath());
139 >        }
140      }
141      
142      public void receiveAlert(Alert alert) {
143 <        // process and save
143 >        // get config proxy
144 >        ConfigurationProxy cp = ConfigurationProxy.getInstance();
145 >        // get file locations
146 >        String rootPath, alertSubDir, alertFileName;
147 >        try {
148 >            rootPath = cp.getProperty("WebFeeder", "WebFeeder.rootPath");
149 >            alertSubDir = cp.getProperty("WebFeeder", "WebFeeder.alertSubDir");
150 >            alertFileName = cp.getProperty("WebFeeder", "WebFeeder.alertFileName");
151 >        } catch (PropertyNotFoundException e) {
152 >            _logger.write(this.toString(), Logger.ERROR, "Failed to get config for Alert Data: "+e);
153 >            // bail out
154 >            return;
155 >        }
156 >        // get raw data
157 >        String data = alert.printAll();
158 >        String hostname = alert.getSource();
159 >        // set paths
160 >        String destDir = rootPath+"/"+alertSubDir+"/"+hostname;
161 >        File outDir = new File(destDir);
162 >        String destFile = destDir+"/"+alertFileName+"."+String.valueOf(alert.getInitialAlertTime());
163 >        File outFile;
164 >        // check if we're at a special "end case" (OK or FINAL)
165 >        if(alert.getLevel()==0 || alert.getLevel()==Alert.alertLevels.length-1) {
166 >            File oldFile = new File(destFile);
167 >            outFile = new File(destFile+Alert.alertLevels[alert.getLevel()]);
168 >            if(!oldFile.renameTo(outFile)) {
169 >                _logger.write(this.toString(), Logger.WARNING, "Failed to rename old file, "+oldFile.getPath()+" to new file, "+outFile.getPath());
170 >            }
171 >        } else {
172 >            outFile = new File(destFile);
173 >        }
174 >        // try to create directory
175 >        if(!outDir.exists()) {
176 >            if(!outDir.mkdirs()) {
177 >                // didn't exist, and we couldn't make it
178 >                _logger.write(this.toString(), Logger.ERROR, "Failed to create directory: "+outDir.getPath());
179 >                // bail out
180 >                return;
181 >            }
182 >        }
183 >        // directory has been made, check file exists
184 >        if(!outFile.exists()) {
185 >            try {
186 >                outFile.createNewFile();
187 >            } catch (IOException e) {
188 >                _logger.write(this.toString(), Logger.ERROR, "Failed to create file: "+e);
189 >                // bail out
190 >                return;
191 >            }
192 >        }
193 >        // file should now exist
194 >        if(outFile.canWrite()) {
195 >            PrintWriter out;
196 >            try {
197 >                out = new PrintWriter(new FileWriter(outFile));
198 >                out.println(data);
199 >                out.close();
200 >            } catch (IOException e) {
201 >                _logger.write(this.toString(), Logger.ERROR, "Failed to write file: "+e);
202 >            }
203 >        }
204 >        else {
205 >            _logger.write(this.toString(), Logger.ERROR, "File not writeable: "+outFile.getPath());
206 >        }
207      }
208      
209      /**
210       * Overrides the {@link java.lang.Object#toString() Object.toString()}
211       * method to provide clean logging (every class should have this).
212       *
213 <     * This uses the uk.ac.ukc.iscream.util.FormatName class
213 >     * This uses the uk.org.iscream.util.FormatName class
214       * to format the toString()
215       *
216       * @return the name of this class and its CVS revision

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines