EMMA Coverage Report (generated Wed Dec 16 17:19:59 CET 2009)
[all classes][org.sourceforge.xradar.dynamics]

COVERAGE SUMMARY FOR SOURCE FILE [Dynamics.java]

nameclass, %method, %block, %line, %
Dynamics.java100% (1/1)11%  (2/18)4%   (23/513)9%   (8/88)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class Dynamics100% (1/1)11%  (2/18)4%   (23/513)9%   (8/88)
copyImagesToWebSite (): void 0%   (0/1)0%   (0/12)0%   (0/2)
dynamicsStyleReport (String, String): void 0%   (0/1)0%   (0/131)0%   (0/17)
executeMerge (String, String): void 0%   (0/1)0%   (0/170)0%   (0/24)
getDaysSinceLast (): String 0%   (0/1)0%   (0/3)0%   (0/1)
getMasterFinal (): String 0%   (0/1)0%   (0/3)0%   (0/1)
getQualityReportPath (): String 0%   (0/1)0%   (0/3)0%   (0/1)
getSequenceId (): String 0%   (0/1)0%   (0/3)0%   (0/1)
getStaticRoot (): String 0%   (0/1)0%   (0/3)0%   (0/1)
init (): void 0%   (0/1)0%   (0/40)0%   (0/5)
postProcess (String): void 0%   (0/1)0%   (0/78)0%   (0/10)
reset (): void 0%   (0/1)0%   (0/24)0%   (0/7)
setDaysSinceLast (String): void 0%   (0/1)0%   (0/4)0%   (0/2)
setMasterFinal (String): void 0%   (0/1)0%   (0/4)0%   (0/2)
setQualityReportPath (String): void 0%   (0/1)0%   (0/4)0%   (0/2)
setSequenceId (String): void 0%   (0/1)0%   (0/4)0%   (0/2)
setStaticRoot (String): void 0%   (0/1)0%   (0/4)0%   (0/2)
<static initializer> 100% (1/1)100% (14/14)100% (4/4)
Dynamics (): void 100% (1/1)100% (9/9)100% (4/4)

1/**
2 * BSD-style license; for more info see http://xradar.sourceforge.net/license.html
3 */
4package org.sourceforge.xradar.dynamics;
5 
6import java.io.InputStream;
7import java.io.Writer;
8import java.util.logging.Logger;
9 
10import org.sourceforge.xradar.AbstractProcess;
11import org.sourceforge.xradar.DefaultReportValues;
12import org.sourceforge.xradar.XRadarException;
13import org.sourceforge.xradar.statics.Param;
14import org.sourceforge.xradar.statics.Preambule;
15import org.sourceforge.xradar.util.FileUtils;
16import org.sourceforge.xradar.util.StreamUtils;
17import org.sourceforge.xradar.util.XRadarUtils;
18import org.xml.sax.InputSource;
19 
20/**
21 * <p>Implements the Dynamic part of the XRadar QA report.</p>
22 * 
23 * @author Romain Pelisse, belaran@gmail.com
24 *
25 */
26public class Dynamics extends AbstractProcess 
27{
28        private static final Logger logger = Logger.getLogger(Dynamics.class.getSimpleName());
29        
30        private static final String REPORT_TO_MERGE = "report-to-merge";
31        private static final String QUALITY_REPORT_PATH = "quality-report-path";
32        private static final String SEQUENCE_ID = "sequence-id";
33        private static final String DAYS_SINCE_LAST ="days-since-last";
34 
35        /*
36         * Stylesheets to use
37         */
38        private static final String DYNAMICS_STYLE_REPORT = DefaultReportValues.getString("radar.internal.dynamics.process.style.report");;
39        private static final String NORMALIZED_PROCESS = DefaultReportValues.getString("radar.internal.dynamics.process.merge.normalized");
40        private static final String POST_PROCESSING = DefaultReportValues.getString("radar.internal.dynamics.post.processing");
41 
42        public static final String SEQUENCE_ID_ONE = "1";
43        public static final String DAYS_SINCE_LAST_DEFAULT = "0";
44        public static final String DEFAULT_BASE_MASTER_REPORT = "xradar://resources/etc/config/dynamics/dynamics-master-base.xml";
45        public static final String EMPTY = "empty.html";
46        private static final String STATICS_CONFIGURED = "statics-configured";
47        private static final String STATICS_ROOT = "statics-root";
48 
49 
50        private String qualityReportPath;
51        private String sequenceId;
52        private String daysSinceLast;
53        private String masterFinal;
54        private String staticRoot = null;
55 
56        private Preambule preambule;
57        private String mergedFile;
58 
59        /**
60         * <p>Default constructor:</p>
61         * <ol>
62         *         <li>Get logger</li>
63         *  <li>Initialize catalog use to false (default setting)</li>
64         * <ol>
65         * 
66         */
67        public Dynamics()
68        {
69                super.initializedXmlCatalog(false);
70        }
71 
72 
73        public void init() throws XRadarException
74        {
75                if ( ! "".equals(this.getDocsHome() ) )
76                {
77                        // Creating the xml directory, along with the docs-home directory
78                        FileUtils.createDir(this.getDocsHome() + SYSTEM_FILE_SEPARATOR + "xml" + SYSTEM_FILE_SEPARATOR);
79                        // Creating the img directory 
80                        FileUtils.createDir(this.getDocsHome() + SYSTEM_FILE_SEPARATOR + "img" + SYSTEM_FILE_SEPARATOR);                        
81                }
82                else
83                        throw new XRadarException("DocsHome parameter must be setted before called to init().");
84        }
85 
86        /**
87         * 
88         * 
89         * @param previousVersion
90         * @param currentVersion
91         * @return complete filename to product of the merge
92         * @throws XRadarException
93         */
94        public void executeMerge(String previousVersion, String currentVersion) throws XRadarException
95        {
96                String product = this.getDocsHome() + SYSTEM_FILE_SEPARATOR + "tmp.xml";
97                logger.info("Merging previous version file," + previousVersion + ", with " + currentVersion + " file, using " + product + " as a temporary buffer");
98                this.preambule = new Preambule();
99                preambule.getParams().put(Dynamics.XRADAR_CONFIG_FILE, new Param(Dynamics.XRADAR_CONFIG_FILE,super.getConfig()));
100                preambule.getParams().put(Dynamics.REPORT_TO_MERGE, new Param(Dynamics.REPORT_TO_MERGE,currentVersion));
101                preambule.getParams().put(Dynamics.QUALITY_REPORT_PATH, new Param(Dynamics.QUALITY_REPORT_PATH,this.qualityReportPath));
102                preambule.getParams().put(Dynamics.DAYS_SINCE_LAST, new Param(Dynamics.DAYS_SINCE_LAST,this.daysSinceLast));
103                preambule.getParams().put(Dynamics.SEQUENCE_ID, new Param(Dynamics.SEQUENCE_ID,this.sequenceId));
104                merger.setXmlResult(StreamUtils.createOuput(StreamUtils.createFileWriter(product)));
105                merger.setPreambule(preambule);
106                logger.fine("Executing merge now");
107                // FIXME: this is not really elegant
108                InputStream input = null;
109                if ( previousVersion.contains(XRADAR_PROTOCOL) )
110                        input = StreamUtils.retrieveFileContentAsStream(previousVersion);
111                else
112                        input = StreamUtils.readFile(previousVersion);
113                // Merging..
114                merger.merge(new InputSource(input),StreamUtils.retrieveFileContentAsStream(NORMALIZED_PROCESS));
115                // Processing file
116                logger.fine("Merging finished, saving result in file " + product);
117                // If this is 'base' file from xradar we have to change the value of previousVersion to "real" file
118                if ( DEFAULT_BASE_MASTER_REPORT.equals(previousVersion) )
119                        previousVersion = this.getMasterFinal();
120                this.mergedFile = previousVersion;
121                // Now we update the previous version file with the product of the merge
122                StreamUtils.copyFileToFile(product,previousVersion);
123                // products may be now deleted
124                FileUtils.deleteFile(product);
125                // Processing file
126                logger.fine("Deleting temporaty file " + product);
127 
128        }
129 
130        /** 
131         * <p>Post process de dynamics merge report.</p>
132         * 
133         * @param output
134         * @return complete filename to product of the post processing.
135         * @throws XRadarException
136         */
137        public void postProcess(String output) throws XRadarException
138        {
139                logger.info("Post processsing file " + output);
140                // Verifying methods arguments
141                if ( "".equals(output) && ! "".equals(this.getMasterFinal()) )
142                        output = this.getMasterFinal();
143                // Processing file
144                String tmpFile = FileUtils.addSeparatorIfMissing(this.getDocsHome()) + "tmp.xml";
145                merger.setXmlResult(StreamUtils.createOuput(StreamUtils.createFileWriter(tmpFile)));
146                logger.fine("Post processing input file " + this.mergedFile + ".");
147                merger.merge(new InputSource(StreamUtils.readFile(this.mergedFile)),StreamUtils.retrieveFileContentAsStream(POST_PROCESSING));
148                logger.fine("Result saved in " + output);
149                StreamUtils.copyFileToFile(tmpFile,output);
150        }
151 
152        public void copyImagesToWebSite() throws XRadarException
153        {
154                this.copyImagesToWebsite(this.getDocsHome() + SYSTEM_FILE_SEPARATOR);
155        }
156 
157        public void dynamicsStyleReport(String input, String output) throws XRadarException
158        {
159                logger.info("Generating website from file " + output);
160                logger.fine("dynamicsStyleReport called.");
161                // Creating the output writer
162                Writer writer = StreamUtils.createFileWriter(output);
163                merger.setXmlResult(StreamUtils.createOuput(writer));
164                // Defining the transformation preambule
165                // Note that we reuse preambule from previous operation
166                logger.fine("isStaticRoot enabled:" + this.getStaticRoot());
167                if ( this.getStaticRoot() != null && ! "".equals(this.getStaticRoot()) ) 
168                {
169                        this.preambule.getParams().put(STATICS_CONFIGURED, new Param(STATICS_CONFIGURED,"true"));
170                        this.preambule.getParams().put(STATICS_ROOT, new Param(STATICS_ROOT,this.getStaticRoot()));
171                }
172                else
173                        this.preambule.getParams().put(STATICS_CONFIGURED, new Param(STATICS_CONFIGURED,"false"));
174                
175                if (XRadarUtils.isRunningOnWindowsOS()) {
176                        preambule.getParams().put(Dynamics.DOCS_HOME, new Param(Dynamics.DOCS_HOME,SYSTEM_FILE_SEPARATOR + super.getDocsHome()));
177                } else {
178                        preambule.getParams().put(Dynamics.DOCS_HOME, new Param(Dynamics.DOCS_HOME,super.getDocsHome()));
179                }
180                merger.setPreambule(this.preambule);
181                // execute the operation
182                logger.fine("Executing the transformation.");
183                merger.merge(new InputSource(StreamUtils.readFile(input)),StreamUtils.retrieveFileContentAsStream(DYNAMICS_STYLE_REPORT));
184                // Cleaning dynamics 'state'
185                this.reset();
186        }
187 
188        /**
189         * This object keep some kind of 'state', after the call of the following methods:
190         * <ol>
191         *                 <li>executeMerge</li>
192         *                 <li>dynamicsStyleReport</li>
193         * </ol>
194         * To clean the instance ( ensure that not state is conserved, you may call this method.
195         * However, note that this method is already called at the end of the dynacsStyleReport method.
196         */
197        public void reset()
198        {
199                // We remove all the parameter
200                if ( this.preambule != null && this.preambule.getParams() != null )
201                        this.preambule.getParams().clear();
202                // We also set to null to come back to 'init' state
203                this.preambule = null;
204                this.staticRoot = null;
205                this.masterFinal = null;
206                this.qualityReportPath = null;
207        }
208 
209        /**
210         * @return the masterFinal
211         */
212        public String getMasterFinal() {
213                return masterFinal;
214        }
215        /**
216         * @param masterFinal the masterFinal to set
217         */
218        public void setMasterFinal(String masterFinal) {
219                this.masterFinal = masterFinal;
220        }
221 
222        /**
223         * @return the sequenceId
224         */
225        public String getSequenceId() {
226                return sequenceId;
227        }
228 
229        /**
230         * @param sequenceId the sequenceId to set
231         */
232        public void setSequenceId(String sequenceId) {
233                this.sequenceId = sequenceId;
234        }
235 
236        /**
237         * @return the daysSinceLast
238         */
239        public String getDaysSinceLast() {
240                return daysSinceLast;
241        }
242 
243        /**
244         * @return the qualityReportPath
245         */
246        public String getQualityReportPath() {
247                return qualityReportPath;
248        }
249 
250        /**
251         * @param qualityReportPath the qualityReportPath to set
252         */
253        public void setQualityReportPath(String qualityReportPath) {
254                this.qualityReportPath = qualityReportPath;
255        }
256 
257        /**
258         * @param daysSinceLast the daysSinceLast to set
259         */
260        public void setDaysSinceLast(String daysSinceLast) {
261                this.daysSinceLast = daysSinceLast;
262        }
263 
264 
265        /**
266         * @return the staticRoot
267         */
268        public String getStaticRoot() {
269                return staticRoot;
270        }
271        /**
272         * @param staticRoot the staticRoot to set
273         */
274        public void setStaticRoot(String staticRoot) {
275                this.staticRoot = staticRoot;
276        }        
277}

[all classes][org.sourceforge.xradar.dynamics]
EMMA 2.0.5312 (C) Vladimir Roubtsov