View Javadoc

1   /*
2    * $HeadURL: $
3    * $Date: $
4    * $Revision: $
5    * $Author: $
6    * 
7    * Copyright (c) 2005 MindTree Consulting Ltd. 
8    * 
9    * This file is part of Insight.
10   * 
11   * Insight is free software: you can redistribute it and/or modify it under the 
12   * terms of the GNU General Public License as published by the Free Software 
13   * Foundation, either version 3 of the License, or (at your option) any later 
14   * version.
15   * 
16   * Insight is distributed in the hope that it will be useful, but 
17   * WITHOUT ANY WARRANTY; without even the implied warranty of 
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General 
19   * Public License for more details.
20   * 
21   * You should have received a copy of the GNU General Public License along with 
22   * Insight.  If not, see <http://www.gnu.org/licenses/>.
23   */
24  package com.mindtree.techworks.insight.filter.criteria.test;
25  
26  import java.text.ParseException;
27  import java.text.SimpleDateFormat;
28  
29  import com.mindtree.techworks.insight.filter.criteria.DateRangeFilterCriterionField;
30  import com.mindtree.techworks.insight.filter.criteria.FilterCriteria;
31  import com.mindtree.techworks.insight.filter.criteria.FilterCriteriaFormatException;
32  import com.mindtree.techworks.insight.filter.criteria.FilterCriteriaParseException;
33  import com.mindtree.techworks.insight.filter.criteria.FilterCriterion;
34  import com.mindtree.techworks.insight.filter.criteria.FilterCriterionFieldType;
35  import com.mindtree.techworks.insight.filter.criteria.FilterCriterionOperator;
36  import com.mindtree.techworks.insight.filter.criteria.FilterCriterionSeparator;
37  
38  /**
39   * This is a class to test the serialization and deserialization of a filter
40   * criteria.
41   * 
42   * @see com.mindtree.techworks.insight.filter.criteria.FilterCriteria
43   * @author <a href="mailto:bindul_bhowmik@mindtree.com">Bindul Bhowmik</a>
44   * @version $Revision: 27 $ $Date: 2007-12-16 04:58:03 -0700 (Sun, 16 Dec 2007) $
45   */
46  public class FilterCriteriaSerializationTest {
47  
48  	/**
49  	 * Method to construct a filter criteria and then serialize and deserialize
50  	 * it.
51  	 * 
52  	 * @param args
53  	 *            Command Line Arguments - not used.
54  	 */
55  	public static void main (String [] args) {
56  
57  		SimpleDateFormat dateFormat = new SimpleDateFormat (
58  				"yyyyMMdd HH:mm:ss.SSS");
59  
60  		// First Filter Criterion
61  		FilterCriterion filterCriterion1 = new FilterCriterion ();
62  		filterCriterion1
63  				.setFilterValue ("C:\\test.log",
64  									FilterCriterionFieldType.NAMESPACE_FIELD);
65  		DateRangeFilterCriterionField rangeFilterCriterion = new DateRangeFilterCriterionField ();
66  		try {
67  			rangeFilterCriterion.setStartDate (dateFormat
68  					.parse ("20051231 23:59:59.999"));
69  		} catch (ParseException e1) {
70  			e1.printStackTrace ();
71  		}
72  		try {
73  			rangeFilterCriterion.setEndDate (dateFormat
74  					.parse ("20060101 00:00:00.000"));
75  		} catch (ParseException e1) {
76  			e1.printStackTrace ();
77  		}
78  		filterCriterion1
79  				.setFilterValue (rangeFilterCriterion,
80  									FilterCriterionFieldType.DATE_RANGE_FIELD);
81  
82  		// Second Filter Criterion
83  		FilterCriterion filterCriterion2 = new FilterCriterion ();
84  		filterCriterion2
85  				.setFilterValue ("ERROR", FilterCriterionFieldType.PRIORITY_FIELD);
86  		filterCriterion2
87  				.setFilterValue ("javax.sql.SQLException",
88  									FilterCriterionFieldType.EXCEPTION_FIELD);
89  
90  
91  		// Third Filter Criterion
92  		FilterCriterion filterCriterion3 = new FilterCriterion ();
93  		filterCriterion3
94  				.setFilterValue ("Thread-1",
95  									FilterCriterionFieldType.THREAD_NAME_FIELD);
96  
97  		// Fourth Filter Criterion
98  		FilterCriterion filterCriterion4 = new FilterCriterion ();
99  		filterCriterion4
100 				.setFilterValue ("WorkerThread-1",
101 									FilterCriterionFieldType.THREAD_NAME_FIELD);
102 
103 		// Fifth Filter Criterion
104 		FilterCriterion filterCriterion5 = new FilterCriterion ();
105 		filterCriterion5
106 				.setFilterValue ("BootStrap",
107 									FilterCriterionFieldType.CATEGORY_FIELD);
108 
109 		FilterCriteria filterCriteria = new FilterCriteria ();
110 		// Forming a criteria CRT & (CRT & (CRT | CRT)) & (!CRT)
111 		filterCriteria.addFilterCriteriaElement (filterCriterion1);
112 		filterCriteria.addFilterCriteriaElement (FilterCriterionOperator.AND);
113 		filterCriteria
114 				.addFilterCriteriaElement (FilterCriterionSeparator.OPEN_PARANTHESIS);
115 		filterCriteria.addFilterCriteriaElement (filterCriterion2);
116 		filterCriteria.addFilterCriteriaElement (FilterCriterionOperator.AND);
117 		filterCriteria
118 				.addFilterCriteriaElement (FilterCriterionSeparator.OPEN_PARANTHESIS);
119 		filterCriteria.addFilterCriteriaElement (filterCriterion3);
120 		filterCriteria.addFilterCriteriaElement (FilterCriterionOperator.OR);
121 		filterCriteria.addFilterCriteriaElement (filterCriterion4);
122 		filterCriteria
123 				.addFilterCriteriaElement (FilterCriterionSeparator.CLOSE_PARANTHESIS);
124 		filterCriteria
125 				.addFilterCriteriaElement (FilterCriterionSeparator.CLOSE_PARANTHESIS);
126 		filterCriteria.addFilterCriteriaElement (FilterCriterionOperator.AND);
127 		filterCriteria
128 				.addFilterCriteriaElement (FilterCriterionSeparator.OPEN_PARANTHESIS);
129 		filterCriteria.addFilterCriteriaElement (FilterCriterionOperator.NOT);
130 		filterCriteria.addFilterCriteriaElement (filterCriterion5);
131 		filterCriteria
132 				.addFilterCriteriaElement (FilterCriterionSeparator.CLOSE_PARANTHESIS);
133 
134 		String criteriaString = filterCriteria.toString ();
135 
136 		System.out.println ("Serialized Filter Criteria: " + criteriaString);
137 
138 		// criteriaString = "[<D>19050131 23:59:59.000 - 19060201
139 		// 00:00:00.000</D><N>C:\test.log</N>] & (
140 		// [<P>ERROR</P><E>javax.sql.SQLException</E>] & ( [<T>Thread-1</T>] |
141 		// [<T>WorkerThread-1</T>] ) ) & ( ! [<C>BootStrap</C>] )";
142 		// Try to parse it
143 		try {
144 			FilterCriteria newCriteria = FilterCriteria
145 					.parseFilterString (criteriaString);
146 			System.out.println ("Serialized New Filter Criteria: "
147 					+ newCriteria.toString ());
148 		} catch (FilterCriteriaParseException e) {
149 			e.printStackTrace ();
150 		} catch (FilterCriteriaFormatException e) {
151 			e.printStackTrace ();
152 		}
153 
154 	}
155 
156 }