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.2 by tdb, Thu Mar 8 20:57:35 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 39 | 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 53 | Line 77 | public class WebFeeder {
77      // that to a file.
78      
79      public void receiveXMLPacket(XMLPacket packet) {
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
# Line 68 | Line 98 | public class WebFeeder {
98          }
99          // get raw data
100          String data = packet.printAll();
101 <        String hostname = packet.getParam("packet.attributes.host_name");
101 >        String hostname = packet.getParam("packet.attributes.machine_name");
102          // set paths
103          String destDir = rootPath+"/"+latestSubDir+"/"+hostname;
104          String destFile = destDir+"/"+latestFileName;
105 <        // write data
105 >        // try to create directory
106          File outDir = new File(destDir);
107 <        if(outDir.mkdirs()) {
108 <            File outFile = new File(destFile);
109 <            if(outFile.canWrite()) {
110 <                PrintWriter out;
111 <                try {
112 <                    out = new PrintWriter(new FileWriter(outFile));
83 <                    out.println(data);
84 <                    out.close();
85 <                } catch (IOException e) {
86 <                    _logger.write(this.toString(), Logger.ERROR, "Failed to write file: "+e);
87 <                }
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 <            else {
115 <                _logger.write(this.toString(), Logger.ERROR, "File not readable: "+outFile.getPath());
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, "Failed to create directory: "+outDir.getPath());
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