<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.catglobe.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wikicatglobe</id>
	<title>Catglobe Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.catglobe.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wikicatglobe"/>
	<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/Special:Contributions/Wikicatglobe"/>
	<updated>2026-05-10T02:36:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=MediaWiki:Public_read_whitelist&amp;diff=24946</id>
		<title>MediaWiki:Public read whitelist</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=MediaWiki:Public_read_whitelist&amp;diff=24946"/>
		<updated>2014-05-07T08:43:19Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Special:OpenIDLogin&lt;br /&gt;
Special:OpenIDFinish&lt;br /&gt;
Questionnaire_-_Javascript_Fun_Tips&lt;br /&gt;
Showing_Answer_Option_in_tab&lt;br /&gt;
Rotate_answer_options/sub_questions&lt;br /&gt;
Randomize_answer_options/sub_questions&lt;br /&gt;
Drag_and_drop_answer_option_values&lt;br /&gt;
Change_Impsys_mages&lt;br /&gt;
Add_an_extra_row_before_a_sub_question_in_a_grid&lt;br /&gt;
Hide_sub_question_text_column_in_a_grid_question&lt;br /&gt;
Show_a_text_grid_and_a_single_question_in_the_same_page &lt;br /&gt;
Change_stylesheet_of_an_answer_option_column_in_a_single_grid_question&lt;br /&gt;
Add_an_extra_column_before_an_answer_option_column_in_single_grid_question&lt;br /&gt;
Both_horizontal_and_vertical_single_grid&lt;br /&gt;
Disable_sub_questions_in_text_grids&lt;br /&gt;
Number_grid&lt;br /&gt;
Close_to_URL&lt;br /&gt;
Double_columns_in_text_grids&lt;br /&gt;
Count_down_with_invisible_counter&lt;br /&gt;
Fold_in/out_texts_in_question_text&lt;br /&gt;
Force_email_address&lt;br /&gt;
Force_number_of_characters&lt;br /&gt;
Change_text_box_size&lt;br /&gt;
Set_focus_on_question_text_in_the_top&lt;br /&gt;
Maximum_text_length&lt;br /&gt;
Next_button_count_down&lt;br /&gt;
Mark_answer_option_with_keyboard&lt;br /&gt;
Show_flash_movies_on_questionnaire_viewer&lt;br /&gt;
Play_a_commercial_and_automatically_go_next_when_it_is_over_in_questionnaire&lt;br /&gt;
Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&lt;br /&gt;
Hide_Next_button_in_n_seconds&lt;br /&gt;
Show_datepicker_in_text/text_grid_questions&lt;br /&gt;
Show_column_header_in_text_grid_question&lt;br /&gt;
Prioritize_sub_questions_in_a_text_grid_question&lt;br /&gt;
Align_min/max_texts_in_scale_grid_questions&lt;br /&gt;
Add_text_before_answer_option_of_single_question&lt;br /&gt;
Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&lt;br /&gt;
Show_language_selector_page&lt;br /&gt;
Reverse_single_grid_between_sub_questions_and_answer_options&lt;br /&gt;
Insert_a_TextGrid_question_into_a_SingleGrid_Question&lt;br /&gt;
Questionnaire_layout_styling_guideline&lt;br /&gt;
Convert_closed_question_TextBox_into_TextArea&lt;br /&gt;
Movie_player_element&lt;br /&gt;
Show_single_questions_as_dropdown_lists_in_their_own_pages&lt;br /&gt;
Script_for_making_a_text_grid_numerical_summing_to_a_specific_value&lt;br /&gt;
Validate_email_specified_as_an_open_text_of_a_single_question&lt;br /&gt;
Show_more_than_one_singe_grid_in_the_same_page&lt;br /&gt;
Show_more_than_one_singe_question_in_the_same_page&lt;br /&gt;
Category:User_Guidelines&lt;br /&gt;
Change_non-multi_option_in_Multi_question_to_Radio_button&lt;br /&gt;
Disable_users&lt;br /&gt;
Import_tools&lt;br /&gt;
File:Email_validation.zip&lt;br /&gt;
AutoSum_numerical_text_grid&lt;br /&gt;
Make_whole_cell_clickable_in_single_and_multi_grids&lt;br /&gt;
Require_only_one_check_for_grid_question&lt;br /&gt;
Show_more_than_one_questions_in_the_same_page&lt;br /&gt;
Show_open_textbox_in_a_grid_question&lt;br /&gt;
Special:UserLogout&amp;amp;returnto=Main_Page&lt;br /&gt;
Main_Page&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=MediaWiki:Public_read_whitelist&amp;diff=24945</id>
		<title>MediaWiki:Public read whitelist</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=MediaWiki:Public_read_whitelist&amp;diff=24945"/>
		<updated>2014-05-07T07:36:22Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Special:OpenIDLogin&lt;br /&gt;
Questionnaire_-_Javascript_Fun_Tips&lt;br /&gt;
Showing_Answer_Option_in_tab&lt;br /&gt;
Rotate_answer_options/sub_questions&lt;br /&gt;
Randomize_answer_options/sub_questions&lt;br /&gt;
Drag_and_drop_answer_option_values&lt;br /&gt;
Change_Impsys_mages&lt;br /&gt;
Add_an_extra_row_before_a_sub_question_in_a_grid&lt;br /&gt;
Hide_sub_question_text_column_in_a_grid_question&lt;br /&gt;
Show_a_text_grid_and_a_single_question_in_the_same_page &lt;br /&gt;
Change_stylesheet_of_an_answer_option_column_in_a_single_grid_question&lt;br /&gt;
Add_an_extra_column_before_an_answer_option_column_in_single_grid_question&lt;br /&gt;
Both_horizontal_and_vertical_single_grid&lt;br /&gt;
Disable_sub_questions_in_text_grids&lt;br /&gt;
Number_grid&lt;br /&gt;
Close_to_URL&lt;br /&gt;
Double_columns_in_text_grids&lt;br /&gt;
Count_down_with_invisible_counter&lt;br /&gt;
Fold_in/out_texts_in_question_text&lt;br /&gt;
Force_email_address&lt;br /&gt;
Force_number_of_characters&lt;br /&gt;
Change_text_box_size&lt;br /&gt;
Set_focus_on_question_text_in_the_top&lt;br /&gt;
Maximum_text_length&lt;br /&gt;
Next_button_count_down&lt;br /&gt;
Mark_answer_option_with_keyboard&lt;br /&gt;
Show_flash_movies_on_questionnaire_viewer&lt;br /&gt;
Play_a_commercial_and_automatically_go_next_when_it_is_over_in_questionnaire&lt;br /&gt;
Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&lt;br /&gt;
Hide_Next_button_in_n_seconds&lt;br /&gt;
Show_datepicker_in_text/text_grid_questions&lt;br /&gt;
Show_column_header_in_text_grid_question&lt;br /&gt;
Prioritize_sub_questions_in_a_text_grid_question&lt;br /&gt;
Align_min/max_texts_in_scale_grid_questions&lt;br /&gt;
Add_text_before_answer_option_of_single_question&lt;br /&gt;
Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&lt;br /&gt;
Show_language_selector_page&lt;br /&gt;
Reverse_single_grid_between_sub_questions_and_answer_options&lt;br /&gt;
Insert_a_TextGrid_question_into_a_SingleGrid_Question&lt;br /&gt;
Questionnaire_layout_styling_guideline&lt;br /&gt;
Convert_closed_question_TextBox_into_TextArea&lt;br /&gt;
Movie_player_element&lt;br /&gt;
Show_single_questions_as_dropdown_lists_in_their_own_pages&lt;br /&gt;
Script_for_making_a_text_grid_numerical_summing_to_a_specific_value&lt;br /&gt;
Validate_email_specified_as_an_open_text_of_a_single_question&lt;br /&gt;
Show_more_than_one_singe_grid_in_the_same_page&lt;br /&gt;
Show_more_than_one_singe_question_in_the_same_page&lt;br /&gt;
Category:User_Guidelines&lt;br /&gt;
Change_non-multi_option_in_Multi_question_to_Radio_button&lt;br /&gt;
Disable_users&lt;br /&gt;
Import_tools&lt;br /&gt;
File:Email_validation.zip&lt;br /&gt;
AutoSum_numerical_text_grid&lt;br /&gt;
Make_whole_cell_clickable_in_single_and_multi_grids&lt;br /&gt;
Require_only_one_check_for_grid_question&lt;br /&gt;
Show_more_than_one_questions_in_the_same_page&lt;br /&gt;
Show_open_textbox_in_a_grid_question&lt;br /&gt;
Special:UserLogout&amp;amp;returnto=Main_Page&lt;br /&gt;
Main_Page&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Category:CGKB&amp;diff=24850</id>
		<title>Category:CGKB</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Category:CGKB&amp;diff=24850"/>
		<updated>2013-10-23T08:38:02Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is Catglobe Knowledge Base&lt;br /&gt;
[[Category:Contents]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Key:_CatTaskWebServerMessageUrl&amp;diff=24847</id>
		<title>Key: CatTaskWebServerMessageUrl</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Key:_CatTaskWebServerMessageUrl&amp;diff=24847"/>
		<updated>2013-10-23T04:50:25Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CatTask keys]]&lt;br /&gt;
{{HelpFiles_Deployment}}&lt;br /&gt;
&lt;br /&gt;
==Key: CatTaskWebServerMessageUrl==&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;add key=&amp;quot;CatTaskWebServerMessageUrl&amp;quot; value=&amp;quot;tcp://[HOST]:[PORT]/[SERVICENAME]&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
[HOST]: host is the IP address (or DNS name if a local DNS server is available) of the server where the message service is installed.&lt;br /&gt;
&lt;br /&gt;
[PORT]: this is the port number of that the message service uses for communication. Services for different versions will have different port numbers.&lt;br /&gt;
&lt;br /&gt;
[SERVICENAME]: specifies the remoting name of the external service. This setting must be identical to the one in the CatTaskService.exe.config file for the service.&lt;br /&gt;
&lt;br /&gt;
===Purpose===&lt;br /&gt;
&lt;br /&gt;
Remoting url of the messageservice of the cattask service. The key contain host, port and name of the remove service, just like the normal cattask service url&lt;br /&gt;
&lt;br /&gt;
===Example of key===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;add key=&amp;quot;CatTaskWebServerMessageUrl&amp;quot; value=&amp;quot;tcp://localhost:10001/CatTaskService_54_UnitTest_WebHostChannel.rem&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 6471.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Key:_CatTaskServiceUrl&amp;diff=24846</id>
		<title>Key: CatTaskServiceUrl</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Key:_CatTaskServiceUrl&amp;diff=24846"/>
		<updated>2013-10-23T04:50:05Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CatTask keys]]&lt;br /&gt;
{{HelpFiles_Deployment}}&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
==Key: CatTaskServiceUrl==&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;add key=&amp;quot;CatTaskServiceUrl&amp;quot; value=&amp;quot;tcp://[HOST]:[PORT]/[SERVICENAME]&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
[HOST]: host is the IP address (or DNS name if a local DNS server is available) of the server where the CatTask service is installed.&lt;br /&gt;
&lt;br /&gt;
[PORT]: this is the port number of that CatTask uses for communication. Services for different versions will have different port numbers.&lt;br /&gt;
&lt;br /&gt;
[SERVICENAME]: specifies the remoting name of the external service. This setting must be identical to the one in the CatTaskService.exe.config file for the service.&lt;br /&gt;
&lt;br /&gt;
===Purpose===&lt;br /&gt;
&lt;br /&gt;
CatTaskServiceUrl describes the location of the CatTask service on the network. The key consists of three parts that must be specified to be able to make a connection to the service.&lt;br /&gt;
&lt;br /&gt;
[HOST], [PORT], and [SERVICENAME]&lt;br /&gt;
&lt;br /&gt;
This key is required.&lt;br /&gt;
&lt;br /&gt;
===Example of key===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;add key=&amp;quot;CatTaskServiceUrl&amp;quot; value=&amp;quot;tcp://localhost:8085/CatTaskService.rem&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 6470.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Key:_DefaultCountryCodeForImportedUsers&amp;diff=24845</id>
		<title>Key: DefaultCountryCodeForImportedUsers</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Key:_DefaultCountryCodeForImportedUsers&amp;diff=24845"/>
		<updated>2013-10-23T04:49:48Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Import/Export_keys]]&lt;br /&gt;
{{HelpFiles_Deployment}}&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
==Key: DefaultCountryCodeForImportedUsers==&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;add key=&amp;quot;DefaultCountryCodeForImportedUsers&amp;quot; value=&amp;quot;[CODE]&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
[CODE]: Value found in the &amp;quot;Country_Code&amp;quot; column on the &amp;quot;Country&amp;quot; table of the Catglobe database.&lt;br /&gt;
&lt;br /&gt;
===Purpose===&lt;br /&gt;
&lt;br /&gt;
Default country code for imported users. Valid values are all available codes stored in the Country table. If importing users that do not have a country code defined in the imported material, then they will be given this country code instead.&lt;br /&gt;
&lt;br /&gt;
===Example of key===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;add key=&amp;quot;DefaultCountryCodeForImportedUsers&amp;quot; value=&amp;quot;dk&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 6436.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=What_to_test&amp;diff=24827</id>
		<title>What to test</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=What_to_test&amp;diff=24827"/>
		<updated>2013-10-18T10:38:02Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
= What to test  =&lt;br /&gt;
&lt;br /&gt;
== GUI  ==&lt;br /&gt;
&lt;br /&gt;
*Navigator &lt;br /&gt;
*LnF &lt;br /&gt;
*Text resource &lt;br /&gt;
*Language &lt;br /&gt;
*Culture &lt;br /&gt;
*Timezone&lt;br /&gt;
&lt;br /&gt;
== Navigation access  ==&lt;br /&gt;
&lt;br /&gt;
*Navigator &lt;br /&gt;
*NAV is set &lt;br /&gt;
*NAV is not set&lt;br /&gt;
&lt;br /&gt;
== Resource access  ==&lt;br /&gt;
&lt;br /&gt;
*Administor account &lt;br /&gt;
*System account &lt;br /&gt;
*Administrator role &lt;br /&gt;
*Manager role &lt;br /&gt;
*Observer role &lt;br /&gt;
*No role &lt;br /&gt;
*Inherite access&lt;br /&gt;
&lt;br /&gt;
== Function test  ==&lt;br /&gt;
&lt;br /&gt;
*Main function specified in FD &lt;br /&gt;
*Using basic technique to generate test data:&lt;br /&gt;
&lt;br /&gt;
- Equivalence partitioning: http://en.wikipedia.org/wiki/Equivalence_partitioning &lt;br /&gt;
&lt;br /&gt;
- Boundary-value analysis: http://en.wikipedia.org/wiki/Boundary-value_analysis&lt;br /&gt;
&lt;br /&gt;
== Validation test  ==&lt;br /&gt;
&lt;br /&gt;
*Valid value &lt;br /&gt;
*Invalid value &lt;br /&gt;
*Overload value&lt;br /&gt;
&lt;br /&gt;
== Performance test  ==&lt;br /&gt;
&lt;br /&gt;
[[Category: Test case guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Test_case_approval&amp;diff=24826</id>
		<title>Test case approval</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Test_case_approval&amp;diff=24826"/>
		<updated>2013-10-18T10:37:34Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== How to get testcases approved  ==&lt;br /&gt;
&lt;br /&gt;
There are some steps that need to be followed to get your test cases approved: &lt;br /&gt;
&lt;br /&gt;
=== Get a list of what to be tested  ===&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;u&amp;gt;&#039;&#039;&#039;Input:&#039;&#039;&#039;&amp;lt;/u&amp;gt;Feature Design &lt;br /&gt;
#&amp;lt;u&amp;gt;&#039;&#039;&#039;Output:&#039;&#039;&#039;&amp;lt;/u&amp;gt; a list of&amp;amp;nbsp; testable scenarios in order.&lt;br /&gt;
&lt;br /&gt;
*In this phase, it&#039;s important that the FD as well as the related modules&amp;amp;nbsp;are understood clearly so that all the scenarios are listed. Every unclear scenarios should be discussed together with development team, including Tester, QA, BA and PM. &lt;br /&gt;
*Spreadsheet should be used to specify the list. &lt;br /&gt;
*Scenarios should be grouped&amp;amp;nbsp;and sorted&amp;amp;nbsp;(see &amp;lt;u&amp;gt;&#039;&#039;&#039;&#039;&#039;&#039;[[What to test]]&#039;&#039;&#039;&#039;&#039;&#039;)&amp;lt;/u&amp;gt; &lt;br /&gt;
*Scenarios&#039; priority should be specified.&lt;br /&gt;
&lt;br /&gt;
=== Specify which test can be&amp;amp;nbsp;automation-tested  ===&lt;br /&gt;
&lt;br /&gt;
#&#039;&#039;&#039;&amp;lt;u&amp;gt;Input:&amp;lt;/u&amp;gt;&#039;&#039;&#039; list of scenarios in order &lt;br /&gt;
#&#039;&#039;&#039;&amp;lt;u&amp;gt;Output:&amp;lt;/u&amp;gt;&#039;&#039;&#039; 2 lists of scenarios: a list for manual test and a list for automation test&lt;br /&gt;
&lt;br /&gt;
*In this phase, it is important that tester and dev work well together to specify which&amp;amp;nbsp;case can be implemented automation test and which one should be tested manually. &lt;br /&gt;
*Test data should be provided in details for those cases which will be added to automation test. They must at least&amp;amp;nbsp;fulfill these criteria: &lt;br /&gt;
**100% equivalence partitionning values. &lt;br /&gt;
**100% boundary values. &lt;br /&gt;
**xx% statement coverage.&lt;br /&gt;
*Together with QA, get it approved.&lt;br /&gt;
&lt;br /&gt;
=== Input more information to the test to fulfill the testcase template.  ===&lt;br /&gt;
&lt;br /&gt;
#&#039;&#039;&#039;&amp;lt;u&amp;gt;Input:&amp;lt;/u&amp;gt;&#039;&#039;&#039;a list of testable scenarios which&amp;amp;nbsp;are approved. &lt;br /&gt;
#&amp;lt;u&amp;gt;&#039;&#039;&#039;Output:&#039;&#039;&#039;&amp;lt;/u&amp;gt;&amp;amp;nbsp;a list of test cases in correct template and with detail information.&lt;br /&gt;
&lt;br /&gt;
*Base on &amp;lt;u&amp;gt;&#039;&#039;&#039;&#039;[[General guidelines]]&#039;&#039;&#039;&#039;&amp;lt;/u&amp;gt; section,&amp;amp;nbsp;write test cases&amp;amp;nbsp;for those scenarios in correct template and with detail information.&amp;amp;nbsp; &lt;br /&gt;
*Together with QA, get it approved.&lt;br /&gt;
&lt;br /&gt;
=== Create test cases in our System.  ===&lt;br /&gt;
&lt;br /&gt;
#&#039;&#039;&#039;&amp;lt;u&amp;gt;Input:&amp;lt;/u&amp;gt;&#039;&#039;&#039; a list of test cases having detail information. &lt;br /&gt;
#&amp;lt;u&amp;gt;&#039;&#039;&#039;Output:&#039;&#039;&#039;&amp;lt;/u&amp;gt; test cases are created in vnsurvey with all required information.&lt;br /&gt;
&lt;br /&gt;
*In vnsurvey, create test cases&amp;amp;nbsp;in the same order with the list. &lt;br /&gt;
*Specify required&amp;amp;nbsp;information. &lt;br /&gt;
*For those&amp;amp;nbsp;test cases that are&amp;amp;nbsp;supposed to&amp;amp;nbsp;test automatically, specify the Unittest-related information. &lt;br /&gt;
*Send the test cases&amp;amp;nbsp;number to the&amp;amp;nbsp;Unittest&amp;amp;nbsp;development team. &lt;br /&gt;
*Together with QA, get its final approval.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Test case guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=General_guidelines&amp;diff=24825</id>
		<title>General guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=General_guidelines&amp;diff=24825"/>
		<updated>2013-10-18T10:37:20Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== How to write test case  ==&lt;br /&gt;
&lt;br /&gt;
=== Details required before writing test cases  ===&lt;br /&gt;
&lt;br /&gt;
*Read Specification and Requirements carefully&lt;br /&gt;
*Be clear with the design ad the implementation details&lt;br /&gt;
*Analyze and Identify all possible scenarios&lt;br /&gt;
*Identify the test enviroments and test types&lt;br /&gt;
*Should have detailed information related and affected areas of the requirement&lt;br /&gt;
*Should be clear of behavior under failure condition (invalid input, boundary values, ect.)&lt;br /&gt;
&lt;br /&gt;
=== Qualities of a Good Test Case  ===&lt;br /&gt;
&lt;br /&gt;
*Easy to determine the result&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Tests are viewed one after the other in quick succession, usually in groups of serveral hundred to a thousand. As such, it is important that the results be easy to interpret. &lt;br /&gt;
&lt;br /&gt;
*Quick to determine the result&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The tests should need no more than a fiew seconds to convey their results to the tester. &lt;br /&gt;
&lt;br /&gt;
*Self explanatory&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The tests should not need an understanding of the specification to be used. &lt;br /&gt;
&lt;br /&gt;
*Short&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Tests should be very short (a paragrapt or so) and certainly not require scrolling on even the most modest of screens, unless the test is specifically for scrolling or paginating behaviour. &lt;br /&gt;
&lt;br /&gt;
*Valid&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unless specifically testing error-recovery features, the tests should all be valid &lt;br /&gt;
&lt;br /&gt;
*Cross-platform&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Test should be a cross-platform as reasonably possible, working across different devices, screen resolutions, paper sizes, etc. Exceptions should be document their assumption &lt;br /&gt;
&lt;br /&gt;
Note: Properly written test cases help both testers as well as developers while execution and debugging.&lt;br /&gt;
&lt;br /&gt;
=== Improving Testability (Easy to Test) - Language  ===&lt;br /&gt;
&lt;br /&gt;
*Use Action case say Do This, Do That&lt;br /&gt;
*System Display this, Do That&lt;br /&gt;
*Simple Conversational Language&lt;br /&gt;
*Exact, consistent names of fields, not generic&lt;br /&gt;
*Don&#039;t explain windows basics&lt;br /&gt;
*10-15 steps or less. In case of integration test cases try to provide references instead of explaining te functionality again and again.&lt;br /&gt;
*Always update your test case with the new build&lt;br /&gt;
*Follow Naming Convention - Naming Convention helps to differentiate between function, control, dbname, etc. It helps in easy identification of different controls, functions, Labels, hyperlink, etc.&lt;br /&gt;
&lt;br /&gt;
=== Naming Conventions  ===&lt;br /&gt;
&lt;br /&gt;
*Module names should be in Capitals and Bold&lt;br /&gt;
*Screen names should be in bold and have camel notations i.e., the first word in capital letters and rest all in small letters. &lt;br /&gt;
*All the objects like textbox, listbox, checkbox, radio buttons, etc. should be in italics and bold. &lt;br /&gt;
*The link names should be mentioned in italics, bold and underline below the word e.g.,&#039;Sign Out&#039; link should be mentioned as &#039;&#039;&#039;&#039;&#039;&#039;Sign Out&#039;&#039;&#039;&#039;&#039;&#039; &lt;br /&gt;
*Database table name should be in caps e.g., Emp_Details table name should be EMP_DETAILS.&lt;br /&gt;
&lt;br /&gt;
=== Test case Attributes  ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Look at&#039;&#039; [[Bug&#039;s settings]] &lt;br /&gt;
&lt;br /&gt;
=== General Guidelines  ===&lt;br /&gt;
&lt;br /&gt;
*Write test cases before implementation of requirement. &lt;br /&gt;
*Test cases are written for all the requirements. Test case should map to current requirement and should not be an enhancement to the application. &lt;br /&gt;
*Follow a standard template for all test cases. &lt;br /&gt;
*User very simple English and general words. &lt;br /&gt;
*Format followed (Aglignment, Naming convention, etc.) by test cases should be uniform for the entire application. &lt;br /&gt;
*All the scenario/Test case should be easily understandable, clear and to the point. &lt;br /&gt;
*Highlight important points by making text bold or assigning it a color or writing it in different font. &lt;br /&gt;
*You may add sections to a group of test cases to make it more informative. &lt;br /&gt;
*You may use double quotes for a paricular display text. &lt;br /&gt;
*Maintain the test cases in a flow so that execution order is maintained and time is saved. &lt;br /&gt;
*You bullet points for different steps. &lt;br /&gt;
*Specify Test case type and priority which would help in determining whether to run the test case in specific scenario or not. &lt;br /&gt;
*the prerequisite for the scenario/test case should be mentioned before the test case. &lt;br /&gt;
*Use a mix of both &#039;Positive and Negative&#039; tests. &lt;br /&gt;
*Provide test data (if possible) &lt;br /&gt;
*Write in details SQL Queries (it will be save time while executing) &lt;br /&gt;
*Add reference to bugs or requirement as per your needs. &lt;br /&gt;
*Add some notes in case you want to convey adtional information or explain the test case with example in case the scenario is not much clear. &lt;br /&gt;
*You can use build number next to your results to keep track of results or determining defect density&lt;br /&gt;
&lt;br /&gt;
Note: Test case should be such that any person going to execute it or read it gets a clear picture of what needs to be done without needing any explanations. &lt;br /&gt;
&lt;br /&gt;
[[Category:Test_case_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Test_case_template&amp;diff=24824</id>
		<title>Test case template</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Test_case_template&amp;diff=24824"/>
		<updated>2013-10-18T10:37:00Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width: 498px; height: 103px&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; width=&amp;quot;498&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Short description &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &amp;amp;lt;project_code&amp;amp;gt; - &amp;amp;lt;short_description&amp;amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Project code &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &amp;amp;lt;project_code&amp;amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Pre-condition &lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Action &lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Post-condition&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | &amp;amp;lt;Current status&amp;amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | &amp;amp;lt;What to do&amp;amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | &amp;amp;lt;Expected result&amp;amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category: Test case guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Resource_access_and_NAV_access_LnF&amp;diff=24821</id>
		<title>Resource access and NAV access LnF</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Resource_access_and_NAV_access_LnF&amp;diff=24821"/>
		<updated>2013-10-18T10:16:53Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
Resource access and NAV access LnF&lt;br /&gt;
#If logged in user doesn&#039;t have enough navigation access to use a module/control, then this module/control should be hidden.&lt;br /&gt;
#If logged in user doesn&#039;t have Administrator access to a resource then Access tab in CRD of this resource will be hidden&lt;br /&gt;
#If logged in user only has Observer access to a resource then Save buttons in CRD of this resource will be hidden, and all controls which would allow the user to change the resource using the CRD must be disabled.&lt;br /&gt;
#If logged in user selects one resource in resource list or open CRD of this resource, then: the buttons in menu bar/tool bar, or controls in CRD which required higher resource access than user has, will:be disabled, or show error msg when using&lt;br /&gt;
&lt;br /&gt;
[[Category:LnF_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Lists_LnF&amp;diff=24820</id>
		<title>Lists LnF</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Lists_LnF&amp;diff=24820"/>
		<updated>2013-10-18T10:16:39Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff9900&amp;quot;&amp;gt;&#039;&#039;&#039;Lists LnF&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#Whenever possible / applicable, lists should support multiple row highlight! &lt;br /&gt;
#When multiple records are highlighted in a list, only the buttons that support this are enabled! &lt;br /&gt;
#If no record is highlighted then disable icon buttons that require a record highlighted &amp;lt;br&amp;gt;[[Image:List-1.png]] &lt;br /&gt;
#Disabled icon buttons are shown in grayscale color (disabled image). &lt;br /&gt;
#All lists should be Ajax-enabled. Only where speed will suffer markedly will we still approve refresh. &lt;br /&gt;
#Scroll bars should be inside lists not outside! &lt;br /&gt;
#Column widths of lists should be changeable (by drag and move) whenever possible in the GUI. If list uses fixed with for whole list it should not be changeable width. &lt;br /&gt;
#Whenever possible make it possible to update information directly in lists. Where the lists have no save button make the updates directly when releasing a record. &lt;br /&gt;
#In lists you should middle-align columns with checkboxes and dates, right-align numbers and left-align all other column types. &lt;br /&gt;
#Lists should have a pager, that can be expected, as default, to have 30, 60 or 100 rows per page ( if possible, should be 100 rows). &lt;br /&gt;
#Lists should use the style sheet for this. The style sheet sets colors for rows and alternate rows. It also sets a color for highlighted rows. &lt;br /&gt;
#If a row is removed or added the alternate color scheme should still be intact throughout the list.&lt;br /&gt;
&lt;br /&gt;
[[Category:LnF_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Graphics_LnF&amp;diff=24819</id>
		<title>Graphics LnF</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Graphics_LnF&amp;diff=24819"/>
		<updated>2013-10-18T10:16:11Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff9900&amp;quot;&amp;gt;&#039;&#039;&#039;Graphics LnF&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Graphics must always look good no matter where it is placed.&lt;br /&gt;
#All menus using dropdown should use 16x16 pixel icons. These icons will not use effect on mouse over.&lt;br /&gt;
&lt;br /&gt;
[[Category:LnF_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Check_boxes_LnF&amp;diff=24818</id>
		<title>Check boxes LnF</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Check_boxes_LnF&amp;diff=24818"/>
		<updated>2013-10-18T10:15:32Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff9900&amp;quot;&amp;gt;&#039;&#039;&#039;Check boxes LnF&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#In a column, if all rows only have check boxes, then should be middle align. But if there are check boxes and text boxes&amp;amp;nbsp;(can&amp;amp;nbsp;input text, number...) then should be left align.&amp;amp;nbsp;&amp;lt;br&amp;gt;[[Image:Check boxes-1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Category:LnF_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Text_boxes_and_field_label_LnF&amp;diff=24817</id>
		<title>Text boxes and field label LnF</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Text_boxes_and_field_label_LnF&amp;diff=24817"/>
		<updated>2013-10-18T10:14:59Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff9900&amp;quot;&amp;gt;&#039;&#039;&#039;Text boxes and field label LnF&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#If a text is too long for a text box / label then the text continues and the user will be able to see this text by moving the cursor in the text box / label. It should never change size due to content. &lt;br /&gt;
#Label must be on the right side of check box. &lt;br /&gt;
#Any field that is just for display of info and cannot be edited should be shown in disabled mode (either gray background or gray font text).&lt;br /&gt;
#Second letter should be small for labels and dialog headers for all English, Danish and Vietnamese text resources. E.g. it is called &amp;quot;User name&amp;quot; and not &amp;quot;User Name&amp;quot;. &lt;br /&gt;
#Field labels in other languages may be longer than the original meaning you should consider that the label will still look good if label is longer text string. &lt;br /&gt;
#Make sure there is always space in between fields, boxes and window edges. Text that ends very close to where a another entry box starts also does not look good. &lt;br /&gt;
#All fields must use general style-sheet that specifies width, color, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:LnF_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Dialog_LnF&amp;diff=24816</id>
		<title>Dialog LnF</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Dialog_LnF&amp;diff=24816"/>
		<updated>2013-10-18T09:59:52Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff9900&amp;quot;&amp;gt;&#039;&#039;&#039;Dialog LnF&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#Dialogues should have good describing titles, where possible individualized like &amp;quot;Navigational access for [Ressource type ]:[ ressourcename]&amp;quot;. &lt;br /&gt;
#Dialogues must never open inside another dialogue. This also includes dialogues that post back to other dialogues! &lt;br /&gt;
#Dialogues that are meant to post back to another dialogue should always be opened in modal view. &lt;br /&gt;
#Modal dialogues should not have Minimize feature. &lt;br /&gt;
#Dialogues should by default never open in maximized state. There should always be space to see that the dialogue is opened on top of another window. &lt;br /&gt;
#Dialogues should always have default size that fits their content, and the content must be resized to fit the dialog when dialog is resized. Make sure the windows are always adequately large to show max number of error messages possible! &lt;br /&gt;
#The default dialog size (mostly height) is never bigger than one of its container page which could cause uncomfortable to user. You must adjust its size to fit in its container page. &amp;lt;br&amp;gt;[[Image:Dialog-1.png]] &lt;br /&gt;
#If a dialogue does not have a reason to have the Restore Down / Maximize button then it should not appear on dialogue. This concerns all dialogues which are exactly fit to its contents and where it will never be necessary to expand to view all the information. (notice that dialogues that have e.g. date control or other controls that can require space we may need to have dialogue expandable). &lt;br /&gt;
#You rarely want to open dialogues with a size that is based on the users screen resolution. Rather you want to base it on the content of your dialogue. Exceptions are when the dialogues will not fit in a 1024 by 768 dialogue. &lt;br /&gt;
#If logged-in user only has observer access to current resource, then when he open the resource, all the controls in dialog should be disabled (or just not editable) and there&#039;s no button Save&amp;lt;br&amp;gt;&lt;br /&gt;
#The buttons on search dialogues should be &#039;Search&#039; and &#039;Cancel&#039;. Please notice examples below of correct and incorrect way&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;[[Image:General-13-1.png]]&amp;lt;br&amp;gt;&amp;amp;nbsp;[[Image:General-13-2.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#If a dialog have only main action Save, it should have 2 buttons: &amp;quot;Save&amp;quot; and &amp;quot;Close&amp;quot;; or &amp;quot;Save and close&amp;quot; and &amp;quot;Cancel&amp;quot;&lt;br /&gt;
[[Image:Save_Close.png]][[Image:SaveClose_and_Cancel.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:LnF_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Error_messages_LnF&amp;diff=24815</id>
		<title>Error messages LnF</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Error_messages_LnF&amp;diff=24815"/>
		<updated>2013-10-18T09:59:43Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff9900&amp;quot;&amp;gt;&#039;&#039;&#039;Error messages LnF&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#Error messages should always explain exactly what the user did wrong. If user cannot immediately understand what the message means; it is a bug! &lt;br /&gt;
#If the same error message is used for two different bugs - it is a bug! &lt;br /&gt;
#Errors should appear in the top of dialogues / windows in red color in bullet format. All the errors that are registered should be listed.&lt;br /&gt;
#The title of dialog must be &amp;quot;Error&amp;quot; if the message lets users know that they can NOT do that action. And &amp;quot;Warning&amp;quot; if still allowing users to continue that action.&lt;br /&gt;
#The GUI should not refresh before showing the errors (if possible)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:LnF_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Text_resource_LnF&amp;diff=24814</id>
		<title>Text resource LnF</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Text_resource_LnF&amp;diff=24814"/>
		<updated>2013-10-18T09:59:32Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff9900&amp;quot;&amp;gt;&#039;&#039;&#039;Text resource LnF&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
One of the most important elements of usability is the way that we write texts that appear in the application. The following is a guideline that guides the way that we expect you to make these in Catglobe. &lt;br /&gt;
&lt;br /&gt;
#If a text resource in the interface does not have English, Danish and Vietnamese translations; it is a bug! &lt;br /&gt;
#If any text in GUI is hard-coded; it is a bug! &lt;br /&gt;
#All dialogues should have informative titles! &lt;br /&gt;
#If any Danish or English text resource has not been corrected and approved by a Process responsible; it is still seen as a bug! &lt;br /&gt;
#Any text that can be partially or fully hidden in the GUI must be shown fully on mouse over: show tool tip or; resize that field (if allow) &lt;br /&gt;
#Never use exclamation marks (!). &lt;br /&gt;
#QAS/RPQ are disallowed abbreviations. Please call it ”Answer sheet” (in DK ”Svarark”). &lt;br /&gt;
#DCS is a disallowed abbreviation. Please call it ”Data cache” (in DK ”Data cache”). &lt;br /&gt;
#When presenting a confirmation message it should in English be formatted as: ”Are you sure you want to [requestet action]?”. If the action that the user is doing is not easily described in one sentence the format may be: &amp;quot;You have chosen to [long version requestet action]. Are you sure you want to [requestet action]?&amp;quot;. In Danish the short version is: ”Er du sikker på du vil [requestet action]?” . And it should used with buttons &amp;quot;Yes&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;Cancel&amp;quot;&lt;br /&gt;
&amp;lt;div style=&#039;text-align: center;&#039;&amp;gt;[[Image:Confirm msg.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff9900&amp;quot;&amp;gt;&#039;&#039;&#039;Menus: UI Text Guidelines&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#A menu is a list of commands available to the user in the current context. &lt;br /&gt;
#Only capitalize the first letter of the menu name and menu command. Do not capitalize secondary words as is done in Microsoft. &lt;br /&gt;
#Include an ellipsis (...) at the end of a menu command that opens another dialog box rather than immediately performing an action. The ellipsis is a visual cue that the user must supply additional information to complete the command. &lt;br /&gt;
#Use verbs or noun phrases to label menu commands that represent actions. &lt;br /&gt;
#If the menu name is a verb, use a noun or noun phrase for the menu command. For example, if the menu name is Insert, the menu commands can be Text, Table, Picture, and so on. &lt;br /&gt;
#If the menu name is a noun, use a verb or verb phrase for the menu command. For example, if the menu name is Table, the menu commands can be Insert Table, Select Row, Insert Column, and so on. &lt;br /&gt;
#To describe removing a check mark from a menu command that toggles on and off, use click to remove the check mark. Don&#039;t use clear. &lt;br /&gt;
#Use click to refer to choosing commands. &lt;br /&gt;
#When referring to a menu or menu command, don&#039;t capitalize the descriptor (the word menu or command).&lt;br /&gt;
&lt;br /&gt;
[[Category:LnF_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=MyPortal_Development_guide&amp;diff=24811</id>
		<title>MyPortal Development guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=MyPortal_Development_guide&amp;diff=24811"/>
		<updated>2013-10-18T07:57:49Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
[[Category:Personalization]]&lt;br /&gt;
&lt;br /&gt;
== Introduction  ==&lt;br /&gt;
&lt;br /&gt;
The My Portal page is your own personalized view of what goes on in the Catglobe system that is interesting to you. &lt;br /&gt;
&lt;br /&gt;
More information about My Portal is available [[My_portal|here]]. &lt;br /&gt;
&lt;br /&gt;
== How to make&amp;amp;nbsp;user defined elements&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
A user defined element as its name is the one you can put anything you want. &lt;br /&gt;
&lt;br /&gt;
[[Image:MyPortal - User-defined.jpg]]&amp;amp;nbsp;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
An element&amp;amp;nbsp;contains 2 features: &lt;br /&gt;
&lt;br /&gt;
*HTML content: input inside Detailed decsription tab&#039;s HTML editor. It is&amp;amp;nbsp;required to show the element in MyPortal page&amp;amp;nbsp;(empty content will end up in not displaying anything) &lt;br /&gt;
*Javascript: input inside Detailed description tab&#039;s script mode. It&amp;amp;nbsp;is used&amp;amp;nbsp;to manipulate the way the element will act, it can connect to registered web services or&amp;amp;nbsp;change the HTML content dynamically. jQuery is also supported, which makes it even more powerful.&lt;br /&gt;
&lt;br /&gt;
== Script - Supported features&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
=== Events  ===&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;onload&#039;&#039;: called after loading the element &lt;br /&gt;
*&#039;&#039;onadd&#039;&#039;: called once after adding the element to MyPortal page (Insert) &lt;br /&gt;
*&#039;&#039;onminimize&#039;&#039;: called when minimizing the element &lt;br /&gt;
*&#039;&#039;onmaximize&#039;&#039;: called when maximizing the element &lt;br /&gt;
*&#039;&#039;onremove&#039;&#039;: called&amp;amp;nbsp;when the&amp;amp;nbsp;element is removed from MyPortal page &lt;br /&gt;
*&#039;&#039;onmouseover&#039;&#039;: called when mouse is over the element  (Currently, this event does not work - CHECK ME)&lt;br /&gt;
*&#039;&#039;onmouseout&#039;&#039;: called when mouse is out of the element  (Currently, this event does not work - CHECK ME)&lt;br /&gt;
&lt;br /&gt;
=== Functions  ===&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;set_title(titleText)&#039;&#039;: change the title of element &lt;br /&gt;
*&#039;&#039;get_contentDiv()&#039;&#039;: get the content of &amp;quot;div&amp;quot; element, used for manipulating the HTML content &lt;br /&gt;
*&#039;&#039;getManager().updateElementOrdination()&#039;&#039;: automatically re-arrange MyPortal page (used when the HTML content is updated dynamically)&lt;br /&gt;
&lt;br /&gt;
=== Sample code  ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
this.onload = function() &lt;br /&gt;
{ &lt;br /&gt;
   // use &amp;quot;this&amp;quot; keyword to access the element itself. &lt;br /&gt;
   alert(&amp;quot;onload&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
this.onadd = function() {&lt;br /&gt;
   alert(&amp;quot;onadd&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
this.onminimize = function() {&lt;br /&gt;
   alert(&amp;quot;onminimize&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
this.onmaximize = function() {&lt;br /&gt;
   alert(&amp;quot;onmaximize&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
this.onremove = function() {&lt;br /&gt;
   alert(&amp;quot;onremove&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Potential problems  ==&lt;br /&gt;
&lt;br /&gt;
It can sometimes be quite problematic when displaying portal elements.Be careful when adding the HTML content, no validation is supported inside the editors. &lt;br /&gt;
&lt;br /&gt;
=== Tips  ===&lt;br /&gt;
&lt;br /&gt;
*Flash objects might be placed on top of others. To fix that problem, these parameters should be added&amp;amp;nbsp;into the flash:&amp;lt;br&amp;gt;&#039;&#039;IE: &amp;quot;&amp;amp;lt;param name=&#039;wmode&#039; value=&#039;transparent&#039; /&amp;amp;gt;&amp;quot;&amp;lt;br&amp;gt;FF: &#039;wmode=&amp;quot;transparent&amp;quot; &#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;[[Display a questionnaire&#039;s answers in real time]]&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;[[Movie player element]]&amp;lt;/u&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Wizard_LnF&amp;diff=24802</id>
		<title>Wizard LnF</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Wizard_LnF&amp;diff=24802"/>
		<updated>2013-10-18T07:15:57Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff9900&amp;quot;&amp;gt;&#039;&#039;&#039;Wizard LnF&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To make wizards look good and be easy to understand across different modules we need to decide on a generic style. This style is specified below with examples. &lt;br /&gt;
&lt;br /&gt;
The name of the dialog should be the general name of the wizard. After the &#039;Step n of n&#039; text should be the name of the specific step. &lt;br /&gt;
&lt;br /&gt;
The styles should be available for the generic style sheet. These should be set to: &lt;br /&gt;
&lt;br /&gt;
- Top background color: F2F2F2 &lt;br /&gt;
&lt;br /&gt;
- &#039;Step n of n:...&#039; text color: FF8A00 &lt;br /&gt;
&lt;br /&gt;
- Middle background: E5E9ED &lt;br /&gt;
&lt;br /&gt;
- Bottom background: D2DEE9 &lt;br /&gt;
&lt;br /&gt;
- Line color: 77A2C4 &lt;br /&gt;
&lt;br /&gt;
- Please use top, bottom, left, right margin for all content in Top, Middle and Bottom section: 15px &lt;br /&gt;
&lt;br /&gt;
- Try to make the same with layout from designer as much as you can ( if any): distance between elements, width and height of the same controls, font size, color,.. and use CSS for all things. &lt;br /&gt;
&lt;br /&gt;
- If we don&#039;t have Top section, please remove them from layout. &lt;br /&gt;
&lt;br /&gt;
- Error message will be above the Middle section and below the Top section, but better is using pop up for Error. &lt;br /&gt;
&lt;br /&gt;
- If you have grid control in the Middle content, please use white background for it, not use the same color with Middle background. &lt;br /&gt;
&lt;br /&gt;
- If you have texts for explaining the control please use color: 999999 and put it below the control (You can see it in the second image below). &lt;br /&gt;
&lt;br /&gt;
- Align Cancel button to the left and right for others.&lt;br /&gt;
&lt;br /&gt;
[[Image:Wizard-1.jpg]] &lt;br /&gt;
&lt;br /&gt;
[[Image:Wizard-2.jpg]] &lt;br /&gt;
&lt;br /&gt;
[[Category:LnF_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Template:Documentation&amp;diff=24800</id>
		<title>Template:Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Template:Documentation&amp;diff=24800"/>
		<updated>2013-10-18T07:03:11Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;{{FULLPAGENAME}}&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ECFCF4; border: 1px solid #AAAAAA; clear: both; margin: 1em 0 0; padding: 5px;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;padding-bottom: 6px; border-bottom: 1px solid #aaa; font-weight: bold;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:TemplateDocumentation-Logo.png|50px|alt=|middle]] &amp;lt;span style=&amp;quot;font-size:125%;&amp;quot;&amp;gt;Template documentation&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding-top: 15px;&amp;quot;&amp;gt;{{{{FULLPAGENAME}}/doc}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;__NOTOC____NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Bug%27s_settings&amp;diff=24799</id>
		<title>Bug&#039;s settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Bug%27s_settings&amp;diff=24799"/>
		<updated>2013-10-18T06:55:12Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
[[Category:Archive]]&lt;br /&gt;
= Settings&amp;amp;nbsp;for Bug template:  =&lt;br /&gt;
&lt;br /&gt;
== Properties:  ==&lt;br /&gt;
&lt;br /&gt;
=== _Property: &amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;Reporter [Resource - &#039;&#039;Required&#039;&#039;]&amp;lt;/span&amp;gt;  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Reporter.png]] &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Objectives:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; This parameter stores information about the bug reporters so that we can:&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; + Contact to them to get more information of the bug report,&amp;amp;nbsp;to ask them for approval after the bug was fixed.&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;+ Add them to the task&#039;s Observer list so that they can get informer messages about the status of the bug they have reported. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Value:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Select the person who sent the bug report. &lt;br /&gt;
&lt;br /&gt;
=== _Property: &amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;Priority [Single - &#039;&#039;Required&#039;&#039;]&amp;lt;/span&amp;gt;  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Priority.png]] &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Objectives:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This parameter is used to prioritize bugs so that we can know which one is more important to be fixed than others. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Values:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Critical:&#039;&#039;&#039; choose this option if:&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ Important work process cannot be completed or Cattask crasking. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; High:&#039;&#039;&#039; choose this option if:&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ A work process cannot be completed.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ A bug that makes Cattask fail.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ Return wrong results.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ Cause invalid data in the database.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ Performance issue on important modules.&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; +&amp;amp;nbsp;The client want it fixed immediately. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Medium:&#039;&#039;&#039; choose this option if:&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ A work process doesn&#039;t work, but a work-around works.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ Validation incorrectly limits something that should be allowed.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ A work process doesn&#039;t work in FireFox, but works in other browswers.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ Text resources wrong/misleading.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ That LnF guideline are not followed prevents users from finishing a work process properly.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ Perfomance/speed issue. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Nice to have:&#039;&#039;&#039; choose this option if:&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ Validation error that doesn&#039;t limit normal work processes.&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ That LnF are not followed doesn&#039;t prevent users from finishing a work process properly.&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;+ Text resource doesn&#039;t look nice but not misleading. &lt;br /&gt;
&lt;br /&gt;
=== _&#039;&#039;&#039;Property:&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;RootCause_Project [Single - &#039;&#039;Required&#039;&#039;] &amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
[[Image:RootCause Project.png]] &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Objectives:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; This parameter is used to keep information about&amp;amp;nbsp;why the bug occurs.&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Investigating this parameter&#039;s information, we&amp;amp;nbsp;can know how&amp;amp;nbsp;stable we&amp;amp;nbsp;are&amp;amp;nbsp;regarding to the Project Management&amp;amp;nbsp;process.&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Values:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; From making projects:&#039;&#039;&#039; choose this option if the bug is caused from making a new projects. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; From fixing other bugs: &#039;&#039;&#039;choose this option if the bug is caused from fixing other bugs. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; New discoveries (Bugs comming out of nowhere): &#039;&#039;&#039;choose this option if the bug is on the system from very early versions. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; From changes in FD:&#039;&#039;&#039; choose this option if the bug is caused from changes in FD. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; From changes in LnF guideline:&#039;&#039;&#039; choose this option if the bug is caused from changes in LnF guideline. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; From missing features when making new projects: &#039;&#039;&#039;choose this option if the bug is caused from missing features when making new projects. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unknown:&#039;&#039;&#039; choose this option if you cannot choose one of the above options. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== _Property: &amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;TaskStatus [&#039;&#039;Single - Required&#039;&#039;] &amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
[[Image:TaskStatus.png]] &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Objectives:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; This property is used to keep Task&#039;s status infomation. It allows us to create the task before the problem is considered as a bug. In the other words, with this property, we can speed up the interaction&amp;amp;nbsp;with clients by creating the task and reply to them right after receiving bug reports. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Values:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Reproducing:&#039;&#039;&#039; choose this option if&amp;amp;nbsp;the task is created for the bug report but it is not accepted as a bug yet. Tester/Dev is trying to reproducing the reported problem.&amp;amp;nbsp;&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Needs more information:&#039;&#039;&#039; choose this option if&amp;amp;nbsp;the&amp;amp;nbsp;problem&amp;amp;nbsp;cannot be reproduced with the reported information. It requires more information from reporter.&amp;amp;nbsp;&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Assigned:&#039;&#039;&#039; choose this option if&amp;amp;nbsp;the reported problem can be reproduced and assiged to responsible Dev/Group. &lt;br /&gt;
&lt;br /&gt;
=== _Property: &amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;FoundIn_Project [&#039;&#039;Resource - Not required&#039;&#039;] &amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
[[Image:FoundIn Project.png]] &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Objectives:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The property simply tell us which project the bug comes from; therefore, presents the project&#039;s quality. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Values&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Choose the project that the bug comes from. &lt;br /&gt;
&lt;br /&gt;
=== _Property: &amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;FoundIn_Stage [&#039;&#039;Single - Required&#039;&#039;] &amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
[[Image:FoundIn Stage.png]] &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Objectves:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The property store information about in which stage of the Project Development&amp;amp;nbsp;Life Circle the bug comes from.&amp;amp;nbsp;Since &amp;quot;the cost of fixing faults increases as you move the product towards live use&amp;quot;, this property&amp;amp;nbsp;allows us to have an overview of our &amp;quot;cost of fixing bug&amp;quot; and then improving the Testing process. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Values&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Testing:&#039;&#039;&#039; choose this option if the bug is found in testing phase before giving it to QA for approving the testing task.&amp;amp;nbsp;&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Approving:&#039;&#039;&#039; choose this option if the bug is found after the testing task was sent to QA for approval at the first time.&amp;amp;nbsp;&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Before Deploy:&#039;&#039;&#039; choose this option if the bug is found after IAT but before client ever had the chance to find it.&amp;amp;nbsp;&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Pre-Released:&#039;&#039;&#039; choose this option if the bug is found after the project was released to client (PRE PROD).&amp;amp;nbsp;&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Released:&#039;&#039;&#039; choose this option if the bug is found after the project was released to client (used in production site). &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The first three options depend on project status while the last two depend on version status&#039;&#039;&#039;. For example: If the bug is found only in developing version, its stage will never be &amp;quot;Released&amp;quot; no matter which project it belongs to. &lt;br /&gt;
&lt;br /&gt;
[[Image:SetStage.png]] &lt;br /&gt;
&lt;br /&gt;
=== _Property: &amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;FoundBy_User [&#039;&#039;Single - Required&#039;&#039;] &amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
[[Image:FoundBy User.png]] &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Objectives:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Similiarly to Approver parameter, this property stores information about the bug reporter. The main idea of having&amp;amp;nbsp;this property is that we can know if the bug is found by&amp;amp;nbsp;the members of&amp;amp;nbsp;development team or other teams. It would be great if all bugs are found by development team in testing stage. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Values&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Development Team:&#039;&#039;&#039; choose this option if the bug is found by the Team itself, including QA and BA if in the Approval phase. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Other Team:&#039;&#039;&#039; choose this option if the bug is found by some other team. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Production:&#039;&#039;&#039; choose this option if the bug is found while doing production work (Catinet and Process). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Client/User:&#039;&#039;&#039; choose this option if the bug is found by end clients/users/partners. &lt;br /&gt;
&lt;br /&gt;
=== _Property: &amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;Version [&#039;&#039;Multi – Required&#039;&#039;)] &amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Version.png]] &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Objectives:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The property stores information about how many and which versions the bug occurs so that the Devs and Tester can know in which versions the bugs should be fixed. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Values:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Select all the versions having the bug. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;&#039;&#039;New Version setting (applied from Jan 25th, 2010)&#039;&#039;&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Objectives:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; In order to support the sub version setup, a new Version property should be created for each version. &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The property stores information about how many and which sub-versions the bug occurs so that the Devs and Tester can know in which sub-versions the bugs should be fixed. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Values:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Select all the sub-versions having the bug. &lt;br /&gt;
&lt;br /&gt;
[[Image:58 Version.png]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:60 Version.png]] &lt;br /&gt;
&lt;br /&gt;
=== _Property: &amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;Version_unFixed [&#039;&#039;Multi – Required&#039;&#039;] &amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Version unFixed.png]] &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Objectives:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; This property stores information about which versions the bug hasn&#039;t been fixed yet. Using it together with the Version property, we have all information about relationship between bugs and versions. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Values:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Select all the versions having the bug which has not been fixed yet. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;New Version setting (applied from Jan 25th, 2010)&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Objectives:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; In order to support the sub version setup, a new Version property should be created for each version.&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; This property stores information about which sub-versions the bug hasn&#039;t been fixed yet. Using it together with the Version property, we have all information about relationship between bugs and sub-versions. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Values:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Select all the sub-versions having the bug which has not been fixed yet. &lt;br /&gt;
&lt;br /&gt;
[[Image:58 Version unFixed.png]]&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
[[Image:60 Version unFixed.png]]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== _Property: &amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;Known issue [Multi - &#039;&#039;Not Required&#039;&#039;]&amp;lt;/span&amp;gt;  ===&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Objectives:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; This property is used to categorize issues which will not be fixed in a release due to technical limitation or bad ROI.&amp;amp;nbsp;It should be specified by the TL together with RnD team. Detail reasons should be specified in the resource&#039;s journal. &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Values:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &#039;&#039;&#039;Technical limitation&#039;&#039;&#039;: choose this option if the issue cannot be fixed by our current technique. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &#039;&#039;&#039;3rd party library&#039;s bug&#039;&#039;&#039;: choose this option if the issue come from 3rd party&#039;s problems. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &#039;&#039;&#039;Costly bug&#039;&#039;&#039;: choose this option if the issue can be fixed but it takes too much time, manpower in comparison to the benefit. &lt;br /&gt;
&lt;br /&gt;
[[Image:Known Issue.png]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Template:HelpFiles_Deployment&amp;diff=24797</id>
		<title>Template:HelpFiles Deployment</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Template:HelpFiles_Deployment&amp;diff=24797"/>
		<updated>2013-10-18T04:56:41Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Template:HelpFiles_Deployment&amp;diff=24796</id>
		<title>Template:HelpFiles Deployment</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Template:HelpFiles_Deployment&amp;diff=24796"/>
		<updated>2013-10-18T04:55:41Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Create_a_public_page_(anonymous_access)&amp;diff=24795</id>
		<title>Create a public page (anonymous access)</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Create_a_public_page_(anonymous_access)&amp;diff=24795"/>
		<updated>2013-10-18T04:54:12Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
How public a page in wiki so Every can access without require to log in&lt;br /&gt;
&lt;br /&gt;
1. Go wiki page http://wiki.catglobe.com/index.php/MediaWiki:Whitelist then add a page name to public&lt;br /&gt;
&lt;br /&gt;
Remember Only  wiki Administrators group can edit this page&lt;br /&gt;
&lt;br /&gt;
 [[category:Wiki guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Working_with_QSL&amp;diff=24793</id>
		<title>Working with QSL</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Working_with_QSL&amp;diff=24793"/>
		<updated>2013-10-18T04:46:40Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== What is QSL ? ==&lt;br /&gt;
QSL stands for Questionnaire Structure Language . We can use this language to specify structure of a questionnaire template including questionnaire&#039;s properties , questions and question&#039;s properties . Though QSL has not been supported completely questionnaire template ( there are a few features missing ), it is an advance way to work with questionnaire template . Once getting familiar with QSL , user can create a questionnaire template quicker than using the GUI .&lt;br /&gt;
== From which version QSL has supported ? ==&lt;br /&gt;
QSL started in version 5.4 (VN1197QNR - Import of Questionnaire template) . In 5.5 , we re-defined the grammar of QSL and keep it up to now . An improvement was made in 5.6 so that the engine can catch syntax error and support test resource for error message .    &lt;br /&gt;
== Before working with QSL ==&lt;br /&gt;
QSL is a domain specific language (DSL) . It is always a painful to deal with DSL by our own but everything is easier thank to ANTLR (AnoTher Tool for Language Recognition). This is a language tool that provides a framework for constructing recognizers, compilers, and translators from grammatical descriptions containing actions in a variety of target languages. It is widely used because it&#039;s easy to understand, powerful, flexible, generates human-readable output and free . It is recommended that developers read the book &amp;quot;The Definitive Antlr Reference Building Domain-Specific Languages&amp;quot; to have a background before getting into QSL . You also need to install ANTLR Runtime engine and configure environment .&lt;br /&gt;
&lt;br /&gt;
== Processing QSL  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Process_QSL.png]]&lt;br /&gt;
&lt;br /&gt;
All the work we need to do is define the syntax for QSL ( edit file Questionnaire.g) and write a class to parse the abstract structure tree into a Questionnaire object . We use ANTLR Work to edit and debug the syntax of QSL &lt;br /&gt;
[[Image:ANTLR_Work.JPG]]&lt;br /&gt;
&lt;br /&gt;
After finished Questionnaire.g , we also use ANTLR Work to generate Java source code for the lexer and parser . &lt;br /&gt;
&lt;br /&gt;
[[Image:GenerateCode.JPG]]&lt;br /&gt;
&lt;br /&gt;
Put QuestionnaireLexer.java and QuestionnaireParser.java into source code folder and compile as normal source file . &lt;br /&gt;
The final work we need to handle is parsing the tree structure into Questionnaire object using the API library comes with ANTLR package . &lt;br /&gt;
&lt;br /&gt;
[[Image:ASTTree.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Reference links == &lt;br /&gt;
http://antlr.org/&lt;br /&gt;
&amp;lt;br&amp;gt;http://www.ociweb.com/jnb/jnbJun2008.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=WebConfig_-_Requirements_guideline&amp;diff=24792</id>
		<title>WebConfig - Requirements guideline</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=WebConfig_-_Requirements_guideline&amp;diff=24792"/>
		<updated>2013-10-18T04:46:31Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
There are some requirements you should specify clearly when making a request for the new webconfig keys: &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; width=&amp;quot;1000&amp;quot; align=&amp;quot;left&amp;quot; border=&amp;quot;2&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color: #993300&amp;quot;&amp;gt;WebConfig Requirements&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900&amp;quot;&amp;gt; &amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Syntax&#039;&#039;&#039; &lt;br /&gt;
| &lt;br /&gt;
Syntax of that new key&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| What is that? What&#039;s that used for? (The purpose of the key)&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| Type of key&#039;s value (Int, UInt, Boolean, String...etc)&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Required&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| Is that key required or not?&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Default value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| The default value for the key, if it is missing. Obviously it makes no sense to have a default, if it is required.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Recommend value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| How should the administrator of the site determine what to set this value to.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Validation rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
Describe the validation rule for the key. We will base on these rules to implement the validation method for the &lt;br /&gt;
&lt;br /&gt;
new one. If no any validation rule specified, we will implement the validation base on Type, Required...etc&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| Give us an example of the new key plz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical_guidelines ]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Using_questionnaire_editor_template_behind_fire_wall&amp;diff=24790</id>
		<title>Using questionnaire editor template behind fire wall</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Using_questionnaire_editor_template_behind_fire_wall&amp;diff=24790"/>
		<updated>2013-10-18T04:44:37Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== Problem ==&lt;br /&gt;
Some client computer using a fire and they can&#039;t open questionnaire template editor. Error message can be various, &amp;quot;Can not connect to server&amp;quot; or &amp;quot;Connection time out&amp;quot; ...etc and the editor applet can&#039;t load the questionnaire template content. &lt;br /&gt;
== Known cases == &lt;br /&gt;
Up to now , client from Coloplast network has faced this problem.&lt;br /&gt;
== Solution == &lt;br /&gt;
Make a rule in fire wall so that it let the editor applet (JRE) can income and outcome internet traffic. &lt;br /&gt;
Below is a example using Mc Afee  Desktop Fire Wall 8.5&lt;br /&gt;
[[Image:Imagerq.png]]    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[category:Technical guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Styling_textbox_in_Questionnaire&amp;diff=24789</id>
		<title>Styling textbox in Questionnaire</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Styling_textbox_in_Questionnaire&amp;diff=24789"/>
		<updated>2013-10-18T04:44:27Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
Currently we don&#039;t have specified class for text box in all question types. Now we only use the parent class contain the text box you want to change and then add &amp;quot;input&amp;quot; or &amp;quot;textarea&amp;quot; after it to make a new class.&lt;br /&gt;
&lt;br /&gt;
Example  for Open answer in Single / Multi question:&lt;br /&gt;
&amp;lt;source lang = css&amp;gt;&lt;br /&gt;
.answer_option_cell input{ height:40px;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
This way is inconvenient a little bit because if we add this class to questionnaire layout stylesheet, it will take effect on all text boxes using the same class.&lt;br /&gt;
So if you want to change style of text box in only that question, you can put new class in the stylesheet section in questionnaire editor or use jQuery.&lt;br /&gt;
&lt;br /&gt;
Here some images for you to see relationship between class and text box so you can add more class to edit it.&lt;br /&gt;
&lt;br /&gt;
===Textgrid===&lt;br /&gt;
&amp;lt;source lang = css&amp;gt;&lt;br /&gt;
.grid_inner input { height:30px;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[Image:Textgrid.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Single/Multi open answer===&lt;br /&gt;
&amp;lt;source lang = css&amp;gt;&lt;br /&gt;
.answer_option_cell input {    height:40px;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[Image:Single_openanswer.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Number or text question===&lt;br /&gt;
&amp;lt;source lang = css&amp;gt;&lt;br /&gt;
.question_content input { height:30px;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[Image:Number.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open questions===&lt;br /&gt;
&amp;lt;source lang = css&amp;gt;&lt;br /&gt;
.question_outer textarea { height:200px;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[Image:Open.png]]&lt;br /&gt;
&lt;br /&gt;
[[category:Technical guidelines]]&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=ServerMethods%27_exception_handling&amp;diff=24788</id>
		<title>ServerMethods&#039; exception handling</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=ServerMethods%27_exception_handling&amp;diff=24788"/>
		<updated>2013-10-18T04:44:05Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== Introduction  ==&lt;br /&gt;
&lt;br /&gt;
ServerMethods&#039; exception handling for asynchronous server methods has been improved. The improvement will be available from version 5.0 and forward. Should anyone need it for version 4.9, then a merge back to version 4.9 will also be done, but this is only done on request. &lt;br /&gt;
&lt;br /&gt;
In the previous version of ServerMethods there was no easy way of handling exceptions that occurred for asynchronous server methods. If an exception occurred then the message from that exception would be returned to the callback function as a string. So, if your server method already returned a string it would be difficult to see, when the string was an exception and when it was actually the result you wanted. &lt;br /&gt;
&lt;br /&gt;
== The Improvements  ==&lt;br /&gt;
&lt;br /&gt;
In order to better handle exceptions for asynchronous server methods we have implemented two new event handlers on the ServerMethods class: &lt;br /&gt;
&lt;br /&gt;
*ServerMethods.onValidationError &lt;br /&gt;
*ServerMethods.onCallServerError&lt;br /&gt;
&lt;br /&gt;
And a new property on the ServerMethodException class: &lt;br /&gt;
&lt;br /&gt;
*isException&lt;br /&gt;
&lt;br /&gt;
How to use these new event handlers and properties will be explained in the following sections. &lt;br /&gt;
&lt;br /&gt;
== ServerMethods.onValidationError  ==&lt;br /&gt;
&lt;br /&gt;
When a server method is called from the client side, then validation of the arguments passed to the server method is done before actually sending the request to the server side. &lt;br /&gt;
&lt;br /&gt;
If validation of the arguments passed to the server method cannot be validated then ServerMethods.onValidationError is called. A default implementation of this method already exists, and we will show it here as an example of how to implement an event handler for validation errors. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// On validation error event handler&lt;br /&gt;
ServerMethods.onValidationError = function(serverMethod, callerArguments)&lt;br /&gt;
{&lt;br /&gt;
	// Get parameters for the server method&lt;br /&gt;
	var parameters = serverMethod.getParameters();&lt;br /&gt;
	&lt;br /&gt;
	// Validate number of parameters&lt;br /&gt;
	if(parameters.length&amp;amp;nbsp;!= callerArguments.length)&lt;br /&gt;
	{&lt;br /&gt;
		alert(&amp;quot;Server method &amp;quot;+serverMethod.getName()+&amp;quot; received an invalid number of arguments&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Validate types&lt;br /&gt;
	var messages = &amp;quot;&amp;quot;;&lt;br /&gt;
	for(var i = 0; i &amp;lt; parameters.length; i++)&lt;br /&gt;
	{&lt;br /&gt;
		if(!ServerMethods.__validateType(parameters[i].getType(), callerArguments[i]))&lt;br /&gt;
		{&lt;br /&gt;
			// Some kind of error showing there is a type mismatch&lt;br /&gt;
			messages += &amp;quot; - Parameter &#039;&amp;quot;+parameters[i].getName()+&lt;br /&gt;
				&amp;quot;&#039; expected type &#039;&amp;quot;+parameters[i].getTypeName()+&lt;br /&gt;
				&amp;quot;&#039; not type &#039;&amp;quot;+ (typeof callerArguments[i])+&amp;quot;&#039;&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if(0 &amp;lt; messages.length)&lt;br /&gt;
	{&lt;br /&gt;
		messages = &amp;quot;Type mismatch(es) in server method &amp;quot;+serverMethod.getName()+&amp;quot;:\n&amp;quot;+messages;&lt;br /&gt;
		alert(messages);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The whole page must be loaded before you can change the event handler, so the ServerMethods.onValidationError method could be changed for example when the body fires the onload event. A small example of this is given below: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page language=&amp;quot;c#&amp;quot; Inherits=&amp;quot;CatGlobe.Web.Common.ServerMethods.ServerMethodsTesting&amp;quot; Codebehind=&amp;quot;ServerMethodsTesting.aspx.cs&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.0 Transitional//EN&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;lt;title&amp;gt;ServerMethods example&amp;lt;/title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
			function onPageLoad()&lt;br /&gt;
			{&lt;br /&gt;
				// On validation error event handler&lt;br /&gt;
				ServerMethods.onValidationError = function(serverMethod, callerArguments)&lt;br /&gt;
				{&lt;br /&gt;
					alert(&amp;quot;Validation error&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;/head&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;body onload=&amp;quot;onPageLoad();&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;form action=&amp;quot;ServerMethodsTesting.aspx&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- html goes here --&amp;gt;&lt;br /&gt;
		&amp;lt;/form&amp;gt;&lt;br /&gt;
	&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ServerMethods.onCallServerError  ==&lt;br /&gt;
&lt;br /&gt;
When a server method is called synchronous we can use a try-catch block around the call to catch exceptions that might have been thrown on the server, but doing so for an asynchronous server method is not possible because JavaScript is not waiting actively for the server side to respond back to the client side. &lt;br /&gt;
&lt;br /&gt;
Therefore we have changed the way that asynchronous server methods inform the client side about exceptions occurred on the server side. When an exception is thrown on the server it is captured by ServerMethods API and ServerMethods.onCallServerError is called. &lt;br /&gt;
&lt;br /&gt;
The default implementation for ServerMethods.onCallServerError method is shown below: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// On error event handler&lt;br /&gt;
ServerMethods.onCallServerError = function(exception, serverMethod, callerArguments)&lt;br /&gt;
{&lt;br /&gt;
	alert(exception.getMessage());&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to disable the call to this method as shown in the following example; again overriding this method can only be done after the whole page has been loaded: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page language=&amp;quot;c#&amp;quot; Inherits=&amp;quot;CatGlobe.Web.Common.ServerMethods.ServerMethodsTesting&amp;quot; Codebehind=&amp;quot;ServerMethodsTesting.aspx.cs&amp;quot; %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.0 Transitional//EN&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;lt;title&amp;gt;ServerMethods example&amp;lt;/title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
		function onPageLoad()&lt;br /&gt;
		{&lt;br /&gt;
			ServerMethods.onCallServerError = null;&lt;br /&gt;
		}&lt;br /&gt;
		&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;/head&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;body onload=&amp;quot;onPageLoad();&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;form action=&amp;quot;servermethodstesting.aspx&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- html goes here --&amp;gt;&lt;br /&gt;
		&amp;lt;/form&amp;gt;&lt;br /&gt;
	&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the ServerMethods.onCallServerError is disabled as shown in the example above, then any exception thrown on the server will be send to the client side’s callback function instead. The next section described how it is possible to determine whether the value returned to the callback function is a ServerMethodException or actually the result that was expected.&lt;br /&gt;
&lt;br /&gt;
== ServerMethodException.isException  ==&lt;br /&gt;
&lt;br /&gt;
Instead of returning the exception as a string, the exception object ServerMethodException is now passed to the callback function if an exception was caught on the server side. In order to identify that an exception occurred a new property has been added to the ServerMethodException class called isException, so your callback function should look something like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function onMyServerMethodCallback(returnValue)&lt;br /&gt;
{&lt;br /&gt;
	if(returnValue.isException)&lt;br /&gt;
	{&lt;br /&gt;
		// Do your error handling here&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Do your normal callback handling here&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Notice that when exceptions are thrown the callback function is only called if you have disabled the error handler as described in the previous section.&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Questionnaire_layout_styling_guideline&amp;diff=24787</id>
		<title>Questionnaire layout styling guideline</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Questionnaire_layout_styling_guideline&amp;diff=24787"/>
		<updated>2013-10-18T04:43:50Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== Questionnaire layout styling guideline  ==&lt;br /&gt;
&lt;br /&gt;
To layout questionnaire, we can edit class or id in Style sheet tag. But remember that one class can be used in more than one question types. For this reason, when you change any class/id, it can affect to other questions which use the same class/id. &lt;br /&gt;
&lt;br /&gt;
Considering aspect of layout structure, we can divide them into 2 groups: NormalQuestionType( Page, Open, Single, Multi, Text, Number, Scale, Multimedia) and GridQuestionType (Single grid, Multi grid, Scale grid, Text grid). Generally, each type of question has 2 main elements: main question texts and it&#039;s content (usually is checkbox, radio button, textbox,.. but with GridQuestionType, it can have sub questions inside). Below table shows relationship between class/id and question types. &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; rowspan=&amp;quot;2&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| bgcolor=&amp;quot;#e8e8e8&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;12&amp;quot; | &#039;&#039;&#039;Question types&#039;&#039;&#039; &lt;br /&gt;
| bgcolor=&amp;quot;#e2e2e2&amp;quot; align=&amp;quot;center&amp;quot; rowspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Insert in tag&#039;&#039;&#039; &lt;br /&gt;
| bgcolor=&amp;quot;#d2d2d2&amp;quot; align=&amp;quot;center&amp;quot; rowspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Class/Id function&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | &#039;&#039;&#039;Page&#039;&#039;&#039; &lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | &#039;&#039;&#039;Open&#039;&#039;&#039; &lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | &#039;&#039;&#039;Single&#039;&#039;&#039; &lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | &#039;&#039;&#039;Multi&#039;&#039;&#039; &lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | &#039;&#039;&#039;Text&#039;&#039;&#039; &lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | &#039;&#039;&#039;Number&#039;&#039;&#039; &lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | &#039;&#039;&#039;Scale&#039;&#039;&#039; &lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | &#039;&#039;&#039;Multimedia&#039;&#039;&#039; &lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | &#039;&#039;&#039;Single grid&#039;&#039;&#039; &lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | &#039;&#039;&#039;Multi grid&#039;&#039;&#039; &lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | &#039;&#039;&#039;Scale grid&#039;&#039;&#039; &lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | &#039;&#039;&#039;Text grid&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#ffbf55&amp;quot; colspan=&amp;quot;1&amp;quot; | Class&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | question_outer &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | table &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | the outer table (it wraps question text, and question content), usually uses to make border around the question&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | question_content &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | td &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | the content part&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | multimedia_question_content &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | td &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | like question_content but for Multimedia question (usually is movie playback or flash file)&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | option_table &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | table &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | use for single/multi question. This class is the same as class &amp;quot;question_content&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | option_link &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | a &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | use for the anchor tag, apply to the texts next to radio button or checkbox of Single/Multi question&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | option_row_even &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | tr &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | apply to even row&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | option_row_odd &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | tr &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | apply to odd row&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | answer_option_cell &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | td &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | he same as &amp;quot;option_row_even&amp;quot;/&amp;quot;option_row_odd&amp;quot; but different when we use more than 2 columns for answer options. We use &amp;quot;option_row_even&amp;quot;/&amp;quot;option_row_odd&amp;quot; in tr tag and &amp;quot;answer_option_cell&amp;quot; in td tag&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | grid_outer &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | table &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | for the table contains the GridQuestionType. It is the same as &amp;quot;question_outer&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | grid_inner &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | table &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | for the table contains the content of GridQuestionType. It is the same as &amp;quot;question_content&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | grid_empty_cell &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | td &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | use for the cell that contains nothing in the first row and the first column&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | grid_answeroption_text &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | td &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | use for the cell contains answer option text&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | grid_subquestion_text &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | td &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | use for the cell contains sub question text (layout will change rely on order of class &amp;quot;grid_subquestion_text&amp;quot; in comparison with class &amp;quot;grid_subquestion_odd&amp;quot; and &amp;quot;grid_subquestion_even&amp;quot; in css file)&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | grid_subquestion_odd &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | td &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | use for the cell in the even row&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | grid_subquestion_even &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | td &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | use for the cell in the odd row&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#ffbf55&amp;quot; colspan=&amp;quot;1&amp;quot; | Id&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | page_question_text &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | td &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | use for the cell contains question text of Page question&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | question_text &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | td &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | use main question text&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | grid_question_text &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | td &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | the same as &amp;quot;question_text&amp;quot;, for main question texts of GridQuestionType.&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | errorMessages &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | p span &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | error message texts&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | countdowndisplay &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | div &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | grid_answeroption_text_&amp;amp;lt;i&amp;amp;gt; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | td &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | (with i is the column number): use for a specific cell contains the answer option text&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#f2f2f2&amp;quot; | grid_subquestion_text_&amp;amp;lt;i&amp;amp;gt; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | &amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; | x &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#f2f2f2&amp;quot; align=&amp;quot;center&amp;quot; | td &lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; | ( with i is the row number of the subquestion): use for a specific cell contains the sub question text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Image:NormalQues.gif]] &lt;br /&gt;
&lt;br /&gt;
[[Image:GridQues.gif]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Project_VN2664QNR_:_Export_to_QSL_from_Questionnaire_Editor&amp;diff=24786</id>
		<title>Project VN2664QNR : Export to QSL from Questionnaire Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Project_VN2664QNR_:_Export_to_QSL_from_Questionnaire_Editor&amp;diff=24786"/>
		<updated>2013-10-18T04:43:08Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== What&#039;s purpose of this project ? ==&lt;br /&gt;
The main goal of this project is to allow user to export the structure of a questionnaire template into a QSL script .&lt;br /&gt;
== Feature design == &lt;br /&gt;
The feature design could be found here : &lt;br /&gt;
\\catproc\Share\CatGlobe Teams\Questionnaire\Projects\Version 5.8\VN2644QNR - Export to QSL from Questionnaire Editor &lt;br /&gt;
== Implement GUI == &lt;br /&gt;
In this project , we need to write a new collapse-able container and a container that can hold a collection of collapse-able container because the editor only use Swing ( standard Java&#039;s API library for providing a graphical user interface ) and this library does not have an explicit collapse-able container . &lt;br /&gt;
=== Class diagram ===&lt;br /&gt;
[[Image:Container.JPG‎]]&lt;br /&gt;
=== How to use an instance of collapse-able container === &lt;br /&gt;
All sub panels of the container initialized once on constructor . The parameter of constructor contains an Array of sub panel&#039;s caption and an Array of sub panel . &lt;br /&gt;
In order get the collapse-able container itself , use method getComponent()&lt;br /&gt;
TO add a collapse-able container to another &lt;br /&gt;
== Making an customize save file dialog ==&lt;br /&gt;
Currently we have an class for customize save file dialog but this one has not been supported our customize file filter yet so i modified it a little bit so that it supports &lt;br /&gt;
=== Making the a file filter ===&lt;br /&gt;
The default &amp;quot;All file(*.*)&amp;quot; filter is in inconvenient when using so it will be overwrite . Another useful of it is that we can have text resource fully supported .&lt;br /&gt;
==== Make QSL file filter ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
public class QSLFilter extends FileFilter {&lt;br /&gt;
&lt;br /&gt;
    /* (non-Javadoc)&lt;br /&gt;
     * @see javax.swing.filechooser.FileFilter#accept(java.io.File)&lt;br /&gt;
     */&lt;br /&gt;
    @Override&lt;br /&gt;
    public boolean accept(File arg0) {&lt;br /&gt;
        // TODO Auto-generated method stub&lt;br /&gt;
        if(arg0.isDirectory())&lt;br /&gt;
            return true;&lt;br /&gt;
        else &lt;br /&gt;
            return (getExtension(arg0).equals(&amp;quot;qsl&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* (non-Javadoc)&lt;br /&gt;
     * @see javax.swing.filechooser.FileFilter#getDescription()&lt;br /&gt;
     */&lt;br /&gt;
    @Override&lt;br /&gt;
    public String getDescription() {&lt;br /&gt;
        &lt;br /&gt;
        // TODO Auto-generated method stub&lt;br /&gt;
        return &amp;quot;QSL file(*.qsl)&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    public static String getExtension(File f) {&lt;br /&gt;
        String ext = null;&lt;br /&gt;
        String s = f.getName();&lt;br /&gt;
        int i = s.lastIndexOf(&#039;.&#039;);&lt;br /&gt;
&lt;br /&gt;
        if (i &amp;gt; 0 &amp;amp;&amp;amp;  i &amp;lt; s.length() - 1) {&lt;br /&gt;
            ext = s.substring(i+1).toLowerCase();&lt;br /&gt;
        }&lt;br /&gt;
        return ext;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export questionnaire template to QSL script == &lt;br /&gt;
To implement export task , we need to go through the structure of the questionnaire template ( questionnaire , question , property , answer option , sub-question) and export to a text file . &amp;quot;Visitor Pattern&amp;quot; has been chosen because this pattern allows us add new operations to existing object structures without modifying those structures . Thus, using the visitor pattern helps conformance with the open/closed principle&lt;br /&gt;
=== Visitor pattern ===&lt;br /&gt;
[[Image:Visitor.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== QSL keyword using in exporting ===&lt;br /&gt;
The QSL keywords are defined in file questionnaire.g and we can&#039;t get keywords directly from it . In order to keep the synchronization with import QSL module , we will get the keyword from public variables of QuestionnaireLexer.java and QuestionnaireParser.java . Those 2 file were generated directly and automiccally from Questionnaire.g using ANTLR library .&lt;br /&gt;
=== Processing properties === &lt;br /&gt;
In the questionnaire template , properties are only defined for questionnaire and question but QSL script has properties for sub question and answer option . We need to generate these properties from the properties of the related question . To solve this problem , we use 2 map ( Map in java used like a dictionary in .NET) to store properties relate to answer option and sub question . &lt;br /&gt;
&amp;lt;br&amp;gt;Algorithm : &lt;br /&gt;
&amp;lt;br&amp;gt;-Visit question element . If this question type has properties use for answer option ( or sub question ) , process them and put to the map &lt;br /&gt;
&amp;lt;br&amp;gt;-When visit answer option ( or sub question ) , if the map is not empty then get the value from it and generate properties for answer option ( or sub question )&lt;br /&gt;
  &lt;br /&gt;
 [[category:Technical guidelines]]&lt;br /&gt;
&lt;br /&gt;
=== Data structure use for export task ===&lt;br /&gt;
[[Image:DataStructure.PNG]]&lt;br /&gt;
==== General ====&lt;br /&gt;
The structure of questionnaire template is not completely fit the structure of QSL Script . We do not have an explicit property for answer option so we need to parse the to get the property for answer option from the range contains in question property&#039;s value . Another addition is that the properties for sub question is contained in question&#039;s properties . &lt;br /&gt;
We have made 4 new class in this project : &lt;br /&gt;
&amp;lt;br&amp;gt;   - ExportQSLVisitor : This class implements Visitor pattern . We also store internal information that is needed for export task ( export mode , visited question list ...) and information about the exported questionnaire ( properties set ) .&lt;br /&gt;
&amp;lt;br&amp;gt;   - ExportQSLVisitor : This class stores all information related to a question ( question properties , answer option , sub question , question text ) . It also include saperatedly the properties we use for answer option and sub question .&lt;br /&gt;
&amp;lt;br&amp;gt;   - AnswerOptionQSLExportData : Information of an answer option . &lt;br /&gt;
&amp;lt;br&amp;gt;   - SubQuestionQSLExportData : Information of an sub question&lt;br /&gt;
&lt;br /&gt;
==== Visit Questionnaire Element ====&lt;br /&gt;
If the export mode include questionnaire properties or using HTML , we initialize _questionnaireProperties&lt;br /&gt;
&lt;br /&gt;
==== Visit Question Element ====&lt;br /&gt;
- If this question is not selected to export , ignore it and stop visiting&lt;br /&gt;
&amp;lt;br&amp;gt;- Create new instance of QuestionQSLExportData . Information of question will be created in constructor of QuestionQSLExportData&lt;br /&gt;
&amp;lt;br&amp;gt;- Storing the new QuestionQSLExportData&lt;br /&gt;
&lt;br /&gt;
==== Visit Property Elemnt ====&lt;br /&gt;
- If this property belongs to questionnaire , check &amp;quot;Visit Questionnaire Property Element&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;- If this property belongs to question , check &amp;quot;Question Question property Element&amp;quot;&lt;br /&gt;
===== Visit Questionnaire Property Element =====&lt;br /&gt;
- Create a new QSLProperty for the property &lt;br /&gt;
&amp;lt;br&amp;gt;- If the QSLProperty&#039;s output is valid , then store the output to Questionnaire Property&lt;br /&gt;
&lt;br /&gt;
===== Visit Question Question property Element =====&lt;br /&gt;
- If this property belongs to a question which is not selected to export , than ignore it and stop visiting ( If the export task does not include question properties , also ignore)&lt;br /&gt;
&amp;lt;br&amp;gt; - If the property related to Answer Option and Range value call function handleAnswerOptionPropertyForRange of _currentQuestionData . Return&lt;br /&gt;
&amp;lt;br&amp;gt; - If the property related to Answer Option and single value call function handleAnswerOptionPropertyForSingle of _currentQuestionData . Return&lt;br /&gt;
&amp;lt;br&amp;gt; - If the property related to sub question of scale grid call function handleSubquestionForScaleGrid of _currentQuestionData . Return&lt;br /&gt;
&amp;lt;br&amp;gt; - Other wise , create a new QSLProperty instance for the property . If the QSLOutput is valid , call function insertQSLPropertyToQuestion of _currentQuestionData&lt;br /&gt;
&lt;br /&gt;
==== Visit sub question Element ====&lt;br /&gt;
- If this sub question does not belong to a selected question , return . &lt;br /&gt;
&amp;lt;br&amp;gt;- Other wise , create a SubQuestionQSLExportData for it . Use hasSubQuestionProperties to check if this sub question has property . If yes , get them from the parent question &lt;br /&gt;
&amp;lt;br&amp;gt;- Add the new SubQuestionQSLExportData instance to _currentQuestionData&lt;br /&gt;
&lt;br /&gt;
==== Visit answer option element ====&lt;br /&gt;
- If this answer option does not belong to a selected question , return .&lt;br /&gt;
&amp;lt;br&amp;gt;- Other wise , create a AnswerOptionQSLExportData for it . Use hasAnswerOptionProperties to check if this sub question has property . If yes , get them from the parent question&lt;br /&gt;
&amp;lt;br&amp;gt;- Add this new AnswerOptionQSLExportData instance to _currentQuestionData&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Process_QSL_grammar_file&amp;diff=24785</id>
		<title>Process QSL grammar file</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Process_QSL_grammar_file&amp;diff=24785"/>
		<updated>2013-10-18T04:43:00Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Since the first version of QSL grammar file, there have been many changes and the current grammar is completely different from the original. Unlike other projects, project related to language seems to be not easy to follow. In order to make it clear, i write an article dedicated to technique  we use to solve QSL grammar. &lt;br /&gt;
== Before we continue == &lt;br /&gt;
It would be easier when you have experience with grammar of a language but i think regular expression is all we need to get into QSL grammar file. ANTLR library and ANTLR Works are  also needed.  &lt;br /&gt;
== Sequence of processing QSL script == &lt;br /&gt;
[[Image:Process_QSL.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The lexical analyzer, or lexer, breaks up the input stream into tokens. The parser feeds off this token stream and tries to recognize the sentence structure. Next, we translate the sentences get from parser in to abstract structure tree (AST). Finally, we parse AST into data object.&lt;br /&gt;
This article focuses on lexical level as it caused many problem need to solved (From my point of view, parser grammar of QSL is pretty clean and easy to understand)&lt;br /&gt;
&lt;br /&gt;
== Structure of QSL grammar file ==&lt;br /&gt;
Normally, there are individual file for lexer grammar and parser grammar but in QSL, we use a mixed grammar file. It means that all lexer rules and parser rules are defined in the same file. This is the original structure and decide to keep it since from my own experience, it is easier to work in ANTLR Works.&lt;br /&gt;
== From the bottom of QSL lexer ==&lt;br /&gt;
The lexer has many mode and they work like switches so that we can direct the input stream to match the possible tokens. Besides, we have a flag that plays the most important role in the grammar : lineMode.&lt;br /&gt;
=== Logic of lineMode flag ===&lt;br /&gt;
This flag is true in case we scan each line of the input, searching for keyword or just a text line (question text, answer option text and sub question text). lineMode is false when the input cursor is inside of block (properties or expression).&lt;br /&gt;
=== Question text is not wrapped ===&lt;br /&gt;
Question text(including answer option text, sub question text) used to be wrapped with &#039;##&#039; when the the very first version of QSL came out. Later, in an update, we decided to remove &#039;##&#039;. This is a big change and effect the tactical of handling lexer. &lt;br /&gt;
=== Algorithm of lexer ===&lt;br /&gt;
There is no explicit way to distinguish between question text and keyword and it leads to our special algorithm.  When lineMode is true and we are at the first position of a line, we try to match all the keyword and symbol to find the correct one. If none keyword is matched, then it is consider as a line of question text. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[image:LineMode.jpg ]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[image:Dependency.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notice that ANY_CHARACTER is tokens represent for a line of text. &lt;br /&gt;
==== Negative effect ====&lt;br /&gt;
Although this algorithm does work at the moment, but it still has some potential problem as we see:&lt;br /&gt;
===== What if question text contain QSL keyword? =====&lt;br /&gt;
We all know that question text is an HTML content. It means that it can contain almost every possible character/word. But in case a new text line begin with an QSL keyword? Our beloved algorithm will be broken. Actually in reality, this case is rare but in logic, there is a potential problem need to be considered.&lt;br /&gt;
===== The complexity of DFA dicision making =====&lt;br /&gt;
Token LINE is a special token in QSL grammar and our algorithm focus on it. The problem is that DFA decision making for this token is complicated&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[image:DFADicision.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Whenever we expand the grammar (add new keyword for example), the complexity is increased and leads to &amp;quot;Code too large&amp;quot; problem.&lt;br /&gt;
===== Heavy semantic prediction =====&lt;br /&gt;
Back to the meaning of lexical level, it analyzes the input and return tokens for parser. In QSL Lexer, almost all the tokens have semantic prediction (we use condition and flag to direct the input cursor). Most of semantic prediction we use in lexer come from Parser (we decide tokens base on it&#039;s role in a complete sentence). From my own experience, that can make someone who is new to QSL grammar confused and the lexer grammar looks like hard to understand.&lt;br /&gt;
&lt;br /&gt;
=== Identified problems when working with QSL grammar in Java environment ===&lt;br /&gt;
==== &amp;quot;Code too large&amp;quot; ====&lt;br /&gt;
===== Cause =====  &lt;br /&gt;
Java compiler could not compile code if there is any function larger than 64 kB in size. Some time our rule is complex and the code behind it could up to more than 64kB. No file could be compiled and we can&#039;t use the generated file for our purposes.&lt;br /&gt;
===== Solution =====&lt;br /&gt;
====== Composite grammar ======&lt;br /&gt;
In this way, we split the grammar file into some smaller file. It is the solution mentioned in ANTLR official page. Unluckily, we tried but not succeed with it.&lt;br /&gt;
====== Write our own lexer for a particular tokens ======&lt;br /&gt;
This solution works pretty perfectly when we combine with semantic prediction in grammar file. If we can use our flag to direct the input cursor into a path that only can match a token, it is very effective way to solve the &amp;quot;Code too large&amp;quot; problem. When working project &amp;quot;VN2615QNR - Condition for QSL language&amp;quot;, we use ANTLR API method to handle 3 tokens : EXPRESSION, ANY_CHARACTER and COMMENT. It could take much time but it also bring many useful experiences.      &lt;br /&gt;
  &lt;br /&gt;
== Future improvement for QSL ==&lt;br /&gt;
From now on, QSL cover all the aspect of a questionnaire template. For any further improvement, it is reasonable to consider to wrap question text in double quote symbol (&amp;quot;). It will reduce the semantic prediction and the grammar file looks nicer.&amp;lt;br&amp;gt;&lt;br /&gt;
Logical validating properties should be more strictly, especially those properties we split to answer option or sub question properties set. This feature can lead to a new design for error/warning system.&amp;lt;br&amp;gt;&lt;br /&gt;
Format exported question text (including answer option text and sub question text ) in export QSL module. We know that it is HTML content and sometimes reading a bunch without any indent could be a pain. This feature may require an open library to format text.&amp;lt;br&amp;gt;        &lt;br /&gt;
  &lt;br /&gt;
[[category:Technical guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Placing_JComponent_inside_a_JScrollPane&amp;diff=24784</id>
		<title>Placing JComponent inside a JScrollPane</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Placing_JComponent_inside_a_JScrollPane&amp;diff=24784"/>
		<updated>2013-10-18T04:42:42Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
Add Your Content Here &lt;br /&gt;
&lt;br /&gt;
 [[category:Technical guidelines]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
You have some component in a scroll pane and when its preferred height is less than the scollpane area then you want it to stretch to fill the scollpane. But when it grows bigger than the scollpane area you would like it show the scrollbars. This is very useful when you want to be able to click in the spare space to clear selection or in the case of drag and drop where you want to be able to drop into the empty area. From JDK 6, in order to do this, simply use function &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
this.setFillsViewportHeight(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
But back to JDK 5, you must implement it by your self.&lt;br /&gt;
=Our problem=&lt;br /&gt;
Recently, we have some client using MAC PC. MAC OS only supports JDK 5. That&#039;s the reason why the supported function i mentioned above can&#039;t be use. It leads to our GUI for question properties  dialog broken &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:MAC_bug.png]]&lt;br /&gt;
=Solution=&lt;br /&gt;
Notice that our question properties dialog contains many sub-class of PropertyTable ( also a subclass of JTable. All we have to do is implement Scrollable and write some addition function to the class:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    public Dimension getPreferredScrollableViewportSize() {&lt;br /&gt;
        return getPreferredSize();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {&lt;br /&gt;
        return (orientation == SwingConstants.HORIZONTAL)? visibleRect.width : visibleRect.height;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public boolean getScrollableTracksViewportHeight() {&lt;br /&gt;
        boolean tracks = false;&lt;br /&gt;
        if (getParent() instanceof JViewport) {&lt;br /&gt;
            tracks = getPreferredSize().getHeight() &amp;lt;&lt;br /&gt;
                    ((JViewport) getParent()).getExtentSize().getHeight();&lt;br /&gt;
        }&lt;br /&gt;
        return tracks;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public boolean getScrollableTracksViewportWidth() {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {&lt;br /&gt;
        return getScrollableBlockIncrement(visibleRect, orientation, direction)/5;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;Finally we have working Questionnaire Editor for MAC OS. Happy Swing ;)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:MAC_Fixed.PNG]]&lt;br /&gt;
=References=&lt;br /&gt;
http://www.jasperpotts.com/blog/2007/06/full-size-jcomponent-in-jscrollpane/&lt;br /&gt;
&amp;lt;br&amp;gt;http://explodingpixels.wordpress.com/2008/10/05/making-a-jtable-fill-the-view-without-extension/&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Config_workspace_for_Questionnaire_Editor_module&amp;diff=24782</id>
		<title>Config workspace for Questionnaire Editor module</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Config_workspace_for_Questionnaire_Editor_module&amp;diff=24782"/>
		<updated>2013-10-18T04:40:08Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== Configure workspace for Questionnaire Editor  ==&lt;br /&gt;
&lt;br /&gt;
=== Before working with Eclipse  ===&lt;br /&gt;
&lt;br /&gt;
Make sure that you have the modules below installed (and also configured environment variable) &lt;br /&gt;
&lt;br /&gt;
*Java JDK &lt;br /&gt;
*Apache_ant &lt;br /&gt;
*ANTLR &lt;br /&gt;
*Eclipse&lt;br /&gt;
&lt;br /&gt;
=== Configure Eclipse  ===&lt;br /&gt;
&lt;br /&gt;
*For each version, create a new folder “workspace” which is placed outside the folder “QuestionnaireEditor”.&lt;br /&gt;
&lt;br /&gt;
For example: if folder QuestionnaireEditor is placed at E:\SRC\HEAD\catglobe. Then, the folder &#039;workspace&#039; will be placed at E:\SRC\HEAD After create it, open Elipse, choose workspace for the current version by choosing the folder &#039;workspace&#039; of this version &lt;br /&gt;
&lt;br /&gt;
[[Image:01.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
*Choose OK &lt;br /&gt;
*Choose File -&amp;amp;gt; Import. In node General, choose &#039;Existing Projects into Workspace&#039; and click Next&lt;br /&gt;
[[Image:02.png‎ ]]&lt;br /&gt;
*Choose the folder contains &#039;QuestionnaireEditor&#039; &lt;br /&gt;
[[Image:03.png‎ ]]&lt;br /&gt;
*Then, click Next. This project will be loaded in the Eclipse.&lt;br /&gt;
Focus on the content of one file java in src folder: choose Projects -&amp;amp;gt; Properties &lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:04.png‎ ]]&lt;br /&gt;
*Choose tab Libraries: if all the file .jar don&#039;t look like the same in this image, remove all of them except for JRE System library. (For new loading project into Eclipse, those file .jar will get from the C:\Storage\... -&amp;amp;gt; if see them, remove them). Then, click Add Jars... button: &lt;br /&gt;
*Choose lib folder and insert those jar files: ekitapplet.jar, plugin.jar, antlr-runtime-3.0.1.jar (if they are in &#039;lib&#039; folder).&lt;br /&gt;
[[Image:05.png‎ ]]&lt;br /&gt;
*After do all these things, you can use Eclipse to code Java. This is applied for the first time you load QuestionnaireEditor project. The second time you don&#039;t need to do it since it will reserve your previous configuration.&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Coding_guideline_-_Common_rules&amp;diff=24781</id>
		<title>Coding guideline - Common rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Coding_guideline_-_Common_rules&amp;diff=24781"/>
		<updated>2013-10-18T04:39:58Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This document aims at giving common rules that developers MUST follow to ensure not only consistency in the whole application but also the ease of code reading and maintaining. Due to the fact that we are working mainly on C# language, all examples will be given in this language only. &lt;br /&gt;
&lt;br /&gt;
Please refer to the .NET Framework Design Guidelines (http://msdn.microsoft.com/en-us/library/czefa0ke.aspx) for a complete set of guidelines suggested by Microsoft. &lt;br /&gt;
&lt;br /&gt;
== Terms and Conventions ==&lt;br /&gt;
&lt;br /&gt;
=== Naming Terms ===&lt;br /&gt;
&lt;br /&gt;
There are 3 terms used for naming files, class names, variable names, etc. All are listed in this section. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pascal case&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
The first letter in the identifier and the first letter of each subsequent concatenated word are capitalized. You can use Pascal case for identifiers of three or more characters. &lt;br /&gt;
&lt;br /&gt;
For example: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CatGlobeImageButton&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;LanguageEditor&amp;lt;/font&amp;gt; &amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Camel case&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
The first letter of an identifier is lowercase and the first letter of each subsequent concatenated word is capitalized. &lt;br /&gt;
&lt;br /&gt;
For example: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;resourceId&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;resourceTemplateId&amp;lt;/font&amp;gt; &amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Uppercase&#039;&#039;&#039; All letters in the identifier are capitalized. Use this convention only for identifiers that consist of two or fewer letters. &lt;br /&gt;
&lt;br /&gt;
For example: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ID&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;UI&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;IO&amp;lt;/font&amp;gt; &amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Style Guidelines ==&lt;br /&gt;
&lt;br /&gt;
=== File Organization ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location &#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
*Class file should be put in directory whose path follows class&#039;s namespace. This makes finding a class easier.&lt;br /&gt;
&lt;br /&gt;
For example: code file of class &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#2b91af&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&#039;&#039;CatGlobe.Web.UI.WebControls.CatGlobeImageButton&#039;&#039;&amp;lt;/font&amp;gt; should be found in side &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;“&#039;&#039;{CODE_BASE}\CatGlobe\Web\UI\WebControls&#039;&#039;”&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Naming &#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
*Always use &#039;&#039;Pascal&#039;&#039; for naming code file. &lt;br /&gt;
*Source files should be given the name of the first public class in the file plus “.cs”. The purpose of this naming is clear, it increases the consistent of organization and also the maintainability.&lt;br /&gt;
&lt;br /&gt;
For example: code file &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;“&#039;&#039;{CODE_BASE}\CatGlobe\Web\UI\WebControls\CatGlobeImageButton.cs&#039;&#039;”&amp;lt;/font&amp;gt; should have the first public class as &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#2b91af&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&#039;&#039;CatGlobeImageButton&#039;&#039;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Content&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
*There should be only one &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;namespace&amp;lt;/font&amp;gt; declaration in one code file only. &lt;br /&gt;
*One source file should contain only one public class/interface/enum, although multiple internal classes are allowed. Delegates and Interfaces are allowed to be put in the same file as class/interface/enum.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;sealed &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CatTask&amp;lt;/font&amp;gt; : &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;PersistentObject&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ICatTaskClientObject&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;IComparable&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;sealed &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CatTasksAccess&amp;lt;/font&amp;gt; : &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;AccessBase&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should not&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;sealed &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CatTask&amp;lt;/font&amp;gt; : &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;PersistentObject&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ICatTaskClientObject&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;IComparable&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;[&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Serializable&amp;lt;/font&amp;gt;]&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;sealed &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;StringConstant&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Classes member should be grouped into sections (Fields, Constructors, Properties, Events, Methods, Private interface implementations, Nested types). And there should be a region name in &amp;lt;font color=&amp;quot;#0047ff&amp;quot;&amp;gt;&#039;&#039;#endregion&#039;&#039;&amp;lt;/font&amp;gt; instructive although it is not required. Regions can be shown/hide while viewing with VS thus increasing the readability.&lt;br /&gt;
&lt;br /&gt;
For example: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;sealed &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CatTask&amp;lt;/font&amp;gt; : &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;PersistentObject&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ICatTaskClientObject&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;IComparable&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#region &amp;lt;/font&amp;gt;AccessClass&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;sealed &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CatTasksAccess&amp;lt;/font&amp;gt; : &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;AccessBase&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#endregion &amp;lt;/font&amp;gt;AccessClass&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#region &amp;lt;/font&amp;gt;Private Instance Fields&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private int&amp;lt;/font&amp;gt; resourceId;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private int&amp;lt;/font&amp;gt; resourceTemplateId;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#endregion &amp;lt;/font&amp;gt;Private Instance Fields&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;A propose class file with regions:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;SampleClass&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#region &amp;lt;/font&amp;gt;Nested Enums, Structs, and Classes&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#endregion &amp;lt;/font&amp;gt;Nested Enums, Structs, and Classes&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#region &amp;lt;/font&amp;gt;Constructors &amp;amp;amp; Finalizers&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#endregion &amp;lt;/font&amp;gt;Constructors &amp;amp;amp; Finalizers&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#region &amp;lt;/font&amp;gt;Member variables&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#endregion &amp;lt;/font&amp;gt;Member variables&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#region &amp;lt;/font&amp;gt;roperties&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#endregion &amp;lt;/font&amp;gt;Properties&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#region &amp;lt;/font&amp;gt;Methods&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#endregion &amp;lt;/font&amp;gt;Methods&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*There should not be more than &#039;&#039;&amp;lt;u&amp;gt;500 lines of code&amp;lt;/u&amp;gt;&#039;&#039; inside one file. Files containing more than 500 lines have less readability than the ones with less than 500 lines. There is one exception that we should not take into account on this rules, that are auto-generated files since most of the time we do not maintain these files directly. &lt;br /&gt;
*Each line of code &#039;&#039;&amp;lt;u&amp;gt;should not exceed 120 characters&amp;lt;/u&amp;gt;&#039;&#039;. Lines with more than 120 characters normally require code viewer using the horizontal scrollbar thus decrease readability.&lt;br /&gt;
&lt;br /&gt;
=== Tabs, Indenting, Spacing and Bracing ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tabs and Indenting&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
*Tab characters (\0x09) &#039;&#039;&#039;MUST NOT&#039;&#039;&#039; be used in code. All tabs must be replaced by 3 space characters. &lt;br /&gt;
*All indentation &#039;&#039;&#039;MUST&#039;&#039;&#039; be done with &#039;&#039;&#039;&#039;&#039;3 space characters&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spacing&#039;&#039;&#039; Spaces improve readability by decreasing code density. Here are some guidelines for the use of space characters within code: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Do&#039;&#039;&#039; use a single space after a comma between function arguments.&lt;br /&gt;
&lt;br /&gt;
:Right:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;Console.In.Read(myChar,0,1);&amp;lt;/font&amp;gt; &lt;br /&gt;
:Wrong: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;Console.In.Read(myChar,0,1);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Do not&#039;&#039;&#039; use a space after the parenthesis and function arguments.&lt;br /&gt;
&lt;br /&gt;
:Right: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;CreateFoo(myChar, 0, 1);&amp;lt;/font&amp;gt; &lt;br /&gt;
:Wrong: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;CreateFoo(&amp;lt;span style=&amp;quot;background: rgb(255, 0, 0) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;myChar, 0, 1&amp;lt;span style=&amp;quot;background: rgb(255, 0, 0) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;)&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Do not&#039;&#039;&#039;&#039;&#039;use spaces between a function name and parenthesis.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Right: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;CreateFoo(); &amp;lt;/font&amp;gt; &lt;br /&gt;
:Wrong: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;CreateFoo&amp;lt;span style=&amp;quot;background: rgb(255, 0, 0) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;()&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Do not&#039;&#039;&#039;&#039;&#039;use spaces inside brackets.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Right: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;x = dataArray[index];&amp;lt;/font&amp;gt; &lt;br /&gt;
:Wrong: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;x = dataArray[&amp;lt;span style=&amp;quot;background: rgb(255, 0, 0) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;index&amp;lt;span style=&amp;quot;background: rgb(255, 0, 0) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;]; &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Do&#039;&#039;&#039; use a single space before flow control statements.&lt;br /&gt;
&lt;br /&gt;
:Right: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;while&amp;lt;span style=&amp;quot;background: rgb(192, 192, 192) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;(x == y)&amp;lt;/font&amp;gt; &lt;br /&gt;
:Wrong: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;while(x==y)&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Do&#039;&#039;&#039; use a single space before and after comparison operators.&lt;br /&gt;
&lt;br /&gt;
:Right: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;if (x&amp;lt;span style=&amp;quot;background: rgb(192, 192, 192) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;==&amp;lt;span style=&amp;quot;background: rgb(192, 192, 192) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;y)&amp;lt;/font&amp;gt; &lt;br /&gt;
:Wrong: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;if (x==y)&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bracing&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
*Open braces must always be at the beginning of the line after the statement that begins the block. This increases readability of code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;((CatTaskStatus.Status == CatTaskCommon.&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CatTaskStatus&amp;lt;/font&amp;gt;.Failed)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CatTaskCompleted&amp;lt;/font&amp;gt; ctc = &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CatTaskCompleted&amp;lt;/font&amp;gt;.GetByLatestCompletedDate(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;this&amp;lt;/font&amp;gt;);&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt; (ctc&amp;amp;nbsp;!= &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;null&amp;lt;/font&amp;gt;) &amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;completedDate = ctc.CompletedDate;&amp;lt;/font&amp;gt; &lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;return &amp;lt;/font&amp;gt;completedDate;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;else&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;...&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;((CatTaskStatus.Status == CatTaskCommon.&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CatTaskStatus&amp;lt;/font&amp;gt;.Failed) &amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;{&#039;&#039;&#039;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Arial, sans-serif&amp;quot;&amp;gt;&#039;&#039;&#039;=&amp;amp;gt; Wrong brace&#039;s location&#039;&#039;&#039;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CatTaskCompleted&amp;lt;/font&amp;gt; ctc = &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CatTaskCompleted&amp;lt;/font&amp;gt;.GetByLatestCompletedDate(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;this&amp;lt;/font&amp;gt;);&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;(ctc&amp;amp;nbsp;!= &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;null&amp;lt;/font&amp;gt;) &amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;{&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;completedDate = ctc.CompletedDate;&amp;lt;/font&amp;gt; &lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;return &amp;lt;/font&amp;gt; completedDate;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*For anonymous methods and lambda expressions, the braces must be indent at the same level with its declaration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt; SampleDelegate _mySampleDelegate = &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;delegate&amp;lt;/font&amp;gt;() &amp;lt;/font&amp;gt;&lt;br /&gt;
::::::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;{&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
::::::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;};&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt; SampleDelegate _mySampleDelegate = (name) =&amp;amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
::::::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;{&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
::::::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;}&#039;&#039;&#039;;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Must not put block that contains more than 2 statements in the same line:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not&amp;lt;/u&amp;gt;&#039;&#039;: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt; (ctc&amp;amp;nbsp;!= &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;null&amp;lt;/font&amp;gt;) {&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;completedDate = ctc.CompletedDate; &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt; completedDate; }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*With single statement blocks, using of braces is optionnal. It is encourage to not use the braces to save number of line of code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt; (ctc&amp;amp;nbsp;!= &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;null&amp;lt;/font&amp;gt;) &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;completedDate = ctc.CompletedDate;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt; (ctc&amp;amp;nbsp;!= &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;null&amp;lt;/font&amp;gt;)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#c5000b&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#c5000b&amp;quot;&amp;gt;completedDate = ctc.CompletedDate;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Arial, sans-serif&amp;quot;&amp;gt;&#039;&#039;&#039;=&amp;amp;gt; 3 lines of code do the same as 1 line&#039;&#039;&#039;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#c5000b&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*There are exceptions that brace should be placed on the same line as the keyword that requires braces.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;One statement code block:&amp;lt;/u&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt; CompletedMailTemplateId&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;get&amp;lt;/font&amp;gt; { &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;return &amp;lt;/font&amp;gt; completedMailTemplateId; } &amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Arial, sans-serif&amp;quot;&amp;gt;&#039;&#039;&#039;=&amp;amp;gt; It is much nicer than having 4 lines of code&#039;&#039;&#039;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;set&amp;lt;/font&amp;gt; { completedMailTemplateId = &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;value&amp;lt;/font&amp;gt;; }&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;.NET 3.0 property syntax:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;MyProperty { &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;get&amp;lt;/font&amp;gt;; &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;set&amp;lt;/font&amp;gt;; }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1pt solid rgb(0, 0, 0); padding: 5px; background: rgb(192, 192, 192) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 255);&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Tips:&#039;&#039;&#039; &amp;lt;br&amp;gt; All rules in this section can be applied automatically by applying a common &#039;&#039;Visual Studio settings file&#039;&#039;. Developers just have to remember to apply these rules by pressing &#039;&#039;Ctrl + K + D&#039;&#039; (under default installation) or &#039;&#039;Ctrl + E + C &#039;&#039;using Resharper before committing. &lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Commenting  ===&lt;br /&gt;
&lt;br /&gt;
Comments should be used to describe intention, algorithmic overview, and/or logical flow. It would be ideal, if from reading the comments alone, someone other than the author could understand a function’s intended behavior and general operation. While there are no minimum comment requirements and certainly some very small routines need no commenting at all, it is hoped that most routines will have comments reflecting the programmer’s intent and approach. &lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;//&amp;lt;/font&amp;gt; or &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;///&amp;lt;/font&amp;gt; for commenting but not &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;/* ... */&amp;lt;/font&amp;gt;. The last comment style is out of date, it is useful in the old time when coder wanted to comment a large block of code. Using such comment will save a lot of time as writing &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;//&amp;lt;/font&amp;gt; on each line. However, with new editor, comment/uncomment block of code is just a matter of selecting the block and calling a short cut key. &lt;br /&gt;
*Do not decorate your comment with special charaters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;// *********************************&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;// Comments block&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;// **********************************&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Avoid comments that explain the obvious. Code should be self-explanatory. Good code with readable variable and method names should not require comments.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should not&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;summary&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;Resource Id&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;/summary&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;resourceId;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;=&amp;amp;gt; Comment that makes no sense. Could be something like: &amp;amp;lt;&#039;&#039;The primary id of the &amp;amp;lt;see cref=”CatGlobe.Domain.Common.Resource” /&amp;amp;gt; that this class is working with.&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Include Task-List keywords flags to enable comment-filtering. These comment can be tracked by using Visual Studio Task List window or just simply by searching.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;// TODO: Fix this&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;// HACK: work-around temporarily while waiting for better solution&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;// UNDONE: Will be done in version xxxx&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#008000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1pt solid rgb(0, 0, 0); padding: 5px; background: rgb(192, 192, 192) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;&#039;&#039;&#039;Tips:&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;br&amp;gt; &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;In Visual Studio, more keywords can be defined in Tools &amp;lt;font face=&amp;quot;Times New Roman, serif&amp;quot;&amp;gt;→&amp;lt;/font&amp;gt; Environment → Task List. More detail description can be found here http://msdn.microsoft.com/en-us/library/zce12xx2(VS.80).aspx &amp;lt;/font&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
*Always apply C# comment-blocks (///) to public, protected and internal declaration. The comment will be displayed as tooltip in editor and this helps method&#039;s user a lot for writing code correctly.&lt;br /&gt;
&lt;br /&gt;
See picture below: [[Image:Coding Guidelines Common rules 1.0 html m698f2609.png|thumb|center|500px|Class comment displayed inside help text]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Use comment tags whenever possible, this could give very much help on generating help files. The most used tags are: &amp;lt;font color=&amp;quot;#33cc66&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot;&amp;gt;&amp;amp;lt;summary&amp;amp;gt;, &amp;amp;lt;param&amp;amp;gt;, &amp;amp;lt;paramref&amp;amp;gt;, &amp;amp;lt;return&amp;amp;gt;, &amp;amp;lt;exception&amp;amp;gt;, &amp;amp;lt;see&amp;amp;gt;, &amp;amp;lt;seeAlso&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Class comment:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;summary&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;This is my sample class for illustating comment on coding guide line document&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;/summary&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;SampleClass&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Method comment:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;summary&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;This is my test method. &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;It is created for demonstrating how to write comment for&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;a method.&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;/summary&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;param name=&amp;quot;arg1&amp;quot;&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;This is sample argument 1. It will be used for ... &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;/param&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;param name=&amp;quot;arg2&amp;quot;&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;This is sample argument 2. It will be used for ...&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;/param&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;returns&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;Return the result string.&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;/returns&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;protected &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string &amp;lt;/font&amp;gt; MyMethod(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string &amp;lt;/font&amp;gt; arg1, &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string &amp;lt;/font&amp;gt; arg2)&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1pt solid rgb(0, 0, 0); padding: 5px; background: rgb(192, 192, 192) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 255);&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Tips:&#039;&#039;&#039; &amp;lt;br&amp;gt; In Visual Studio, typing three slashes on the line right before a declaration will automatically create a template for comment on the correspondence element. &lt;br /&gt;
&lt;br /&gt;
An explaination on the comment can be found here: http://msdn.microsoft.com/en-us/magazine/cc302121.aspx &lt;br /&gt;
&lt;br /&gt;
A detail explaination of all comment tags can be found here: http://thoughtpad.net/alan-dean/cs-xml-documentation. &lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Naming ===&lt;br /&gt;
&lt;br /&gt;
==== Common rules ====&lt;br /&gt;
&lt;br /&gt;
*Always use Camel Case or Pascal Case for naming. With private instance member, prefix variable name with an underscore &#039;_&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Pascal case for types (classes/interfaces/delegates/enums/structs) and methods:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;&amp;lt;u&amp;gt;SomeClass&amp;lt;/u&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;void &amp;lt;/font&amp;gt;&amp;lt;u&amp;gt;SomeMethod&amp;lt;/u&amp;gt;() { }&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Camel case for member variables and parameters:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public void &amp;lt;/font&amp;gt;MyMethod(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;&amp;lt;u&amp;gt;someNumber&amp;lt;/u&amp;gt;)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;&#039;&#039;_number&#039;&#039;;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Camel case preceding by an underscore &#039;_&#039; for private/protected fields:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;&amp;lt;u&amp;gt;SomeClass&amp;lt;/u&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;&#039;&#039;_number&#039;&#039;;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;protected &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string &amp;lt;/font&amp;gt;&#039;&#039;_name&#039;&#039;;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Pascal case for enum&#039;s values:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;enum&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CodeReviewResult&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;None,&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;Approval,&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;PartialDisapproval,&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;CompleteDisapproval,&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;NeedRework,&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Must use Upper Case for naming constant and separate words with underscore character &#039;_&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public const int &amp;lt;/font&amp;gt;DATABASE_CONNECTION_TIMEOUT = 500;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Should not create namespaces, classes, methods, properties, fields, or parameters that vary only by capitalization.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;void &amp;lt;/font&amp;gt;MyMethod(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;arg1&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;Arg1&amp;lt;/font&amp;gt;)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Should not use names that begin with numeric characters. &lt;br /&gt;
*Should not use single char variable names, except in &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&#039;&#039;&#039;For/While&#039;&#039;&#039;&amp;lt;/font&amp;gt; loop. &lt;br /&gt;
*Always choose meaningful and specific names. &lt;br /&gt;
*Should not use abbreviations unless the full name is excessive (over 20 characters). With Visual Studio IDE&#039;s IntelliSense, it is very easy finding a variable no matter how long the name is.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;List&amp;lt;/font&amp;gt;&amp;amp;lt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string&amp;lt;/font&amp;gt;&amp;amp;gt; UDFList;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;=&amp;amp;gt; this stands for User Defined list, the name hide the purpose of the owner variable from code reader&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Namespace naming ====&lt;br /&gt;
&lt;br /&gt;
The general rule for naming namespaces is to use the company name followed by the technology name and optionally the feature and design. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;namespace&amp;lt;/font&amp;gt; CatGlobe.DiffStat.Console;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;namespace&amp;lt;/font&amp;gt; CatGlobe.DiffStat.WinApp;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Type naming ====&lt;br /&gt;
&lt;br /&gt;
*Use noun or pronoun for naming classes/interfaces.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;&amp;lt;u&amp;gt;Run&amp;lt;/u&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;&amp;lt;u&amp;gt;Runner&amp;lt;/u&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*MUST prefix an interface with character &amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot;&amp;gt;I&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int erface &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;I&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;SomeInterface&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*MUST suffix custom attribute classes with &amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot;&amp;gt;Attribute&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;MyCustomAttribute&amp;lt;/font&amp;gt;: System.&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Attribute&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*MUST suffix custom exeptions classes with &amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot;&amp;gt;Exeption&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;My&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Exception&amp;lt;/font&amp;gt;: System.&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Exception&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*MUST NOT suffix any enums with &amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot;&amp;gt;Enum&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;enum &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ResourceType&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;Enum&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Arial, sans-serif&amp;quot;&amp;gt;=&amp;amp;gt; it is better if Enum is removed&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Method and Property naming ====&lt;br /&gt;
&lt;br /&gt;
*Use a verb-object pair for naming methods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;void &amp;lt;/font&amp;gt;&amp;lt;u&amp;gt;Test&amp;lt;/u&amp;gt;CatTask();&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;void &amp;lt;/font&amp;gt;&amp;lt;u&amp;gt;Get&amp;lt;/u&amp;gt;Name();&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*If returned type is Boolean, try to prefix method name with “Can”, “Is” or “Has”.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;bool &amp;lt;/font&amp;gt;&amp;lt;u&amp;gt;Can&amp;lt;/u&amp;gt;Save()&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;bool &amp;lt;/font&amp;gt;&amp;lt;u&amp;gt;Is&amp;lt;/u&amp;gt;Editable()&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;bool &amp;lt;/font&amp;gt;&amp;lt;u&amp;gt;Has&amp;lt;/u&amp;gt;Access()&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Never perfix a property name with “Get”, “Set”. It is because when using value of a property it is already understand as calling to a “Get” method.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;Get&amp;lt;/font&amp;gt;IntValue { &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;get&amp;lt;/font&amp;gt;; &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;set&amp;lt;/font&amp;gt;; }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;IntValue { &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;get&amp;lt;/font&amp;gt;; &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;set&amp;lt;/font&amp;gt;; }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Generic types naming ====&lt;br /&gt;
&lt;br /&gt;
*Should use single capital letters for generic types.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;List&amp;lt;/font&amp;gt;&amp;amp;lt;&#039;&#039;&#039;T&#039;&#039;&#039;&amp;amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;where &amp;lt;/font&amp;gt;&#039;&#039;&#039;T&#039;&#039;&#039; : &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Code organization ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;using&amp;lt;/font&amp;gt; Statement ====&lt;br /&gt;
&lt;br /&gt;
*All &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;using&amp;lt;/font&amp;gt; statements should be put outside any namespaces statements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;CatGlobe.Web.UI.WebControls;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;CatGlobe.Web.Common.ClassBase;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;CatGlobe.Web.Common.ServerMethods;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;CatGlobe.Domain.SiteVisitor.ServiceHandler;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;namespace &amp;lt;/font&amp;gt;CatGlobe.Web.Common.Resources.List;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;namespace &amp;lt;/font&amp;gt;CatGlobe.Web.Common.Resources.List&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;CatGlobe.Web.UI.WebControls;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;CatGlobe.Web.Common.ClassBase;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;CatGlobe.Web.Common.ServerMethods;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;CatGlobe.Domain.SiteVisitor.ServiceHandler;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Related &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;using&amp;lt;/font&amp;gt; statements should be group together. This helps reader an overview of which library will be used in the remaining code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;System;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;System.Xml;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;System.IO;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;Infragistics.WebUI.UltraWebGrid; &amp;lt;font face=&amp;quot;Arial, sans-serif&amp;quot; color=&amp;quot;#ff0000&amp;quot;&amp;gt;=&amp;amp;gt; Reference Infragistics&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;Infragistics.WebUI.UltraWebNavigator;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;Infragistics.WebUI.UltraWebToolbar;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;CatGlobe.DataAccess;&amp;lt;font face=&amp;quot;Arial, sans-serif&amp;quot; color=&amp;quot;#ff0000&amp;quot;&amp;gt;=&amp;amp;gt; Reference CatGlobe&#039;s DataAccess&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;CatGlobe.Framework.GroupBuilder; &amp;lt;font face=&amp;quot;Arial, sans-serif&amp;quot; color=&amp;quot;#ff0000&amp;quot;&amp;gt;=&amp;amp;gt; Reference CatGlobe&#039;s Framework&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;CatGlobe.Framework.Resources;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Internal Types ====&lt;br /&gt;
&lt;br /&gt;
*Types that are declared inside a class must be group together. And the group must be put right after class definition.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ResourceList&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#region &amp;lt;/font&amp;gt;Types&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;summary&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;Collection of &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;seecref=&amp;quot;CatGlobe.Domain.Common.Resource&amp;quot;/&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;s,&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;in which we can sort the whole list or &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;fetch resources based on some criteria.&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;/summary&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ResourceCollection&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;summary&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;Provide methods for Save/Delete a single &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;seecref=&amp;quot;CatGlobe.Domain.Common.Resource&amp;quot;/&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;or collection of &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;see cref=&amp;quot;CatGlobe.Domain.Common.Resource&amp;quot;/&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;s.&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;/// &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;amp;lt;/summary&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ResourceHandler&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#endregion &amp;lt;/font&amp;gt;Types&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Member and Local Variables ====&lt;br /&gt;
&lt;br /&gt;
*All class&#039;s member variable must be put at top of class (after internal types declaration). This increase readability of code, since at the first look the viewer can tell what are members of class and also theirs types.&lt;br /&gt;
&lt;br /&gt;
*Each variable of different types must be declared on different lines.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string &amp;lt;/font&amp;gt;_sampleString;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;_sampleInt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;long &amp;lt;/font&amp;gt;_sampleLong1, _sampleLong2, _sampleLong3;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string &amp;lt;/font&amp;gt;_sampleString;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;_sampleInt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Local variables must be clared as close as possible to its first use and must be in the same code block that use it.&lt;br /&gt;
&lt;br /&gt;
==== Methods ====&lt;br /&gt;
&lt;br /&gt;
*A method must not exceed 100 lines. Methods with more than 100 lines usually decrease readability and thus maintainability.&lt;br /&gt;
&lt;br /&gt;
*Methods that relate to each others by any means should be grouped together.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#region &amp;lt;/font&amp;gt;Database Access Methods&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#endregion &amp;lt;/font&amp;gt;Database Access Methods&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#region &amp;lt;/font&amp;gt;Private Utility Methods&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#endregion &amp;lt;/font&amp;gt;Private Utility Methods&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#region &amp;lt;/font&amp;gt;Serialization Methods&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#endregion &amp;lt;/font&amp;gt;Serialization Methods&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Interface implementations must be grouped together.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;interface &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ISample&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;void &amp;lt;/font&amp;gt;SampleMethod();&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;SampleImplementation&amp;lt;/font&amp;gt;: &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ISample&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#region &amp;lt;/font&amp;gt;ISample Members&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;void &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ISample&amp;lt;/font&amp;gt;.SampleMethod()&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;#endregion &amp;lt;/font&amp;gt;ISample Members&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Indentation deep ====&lt;br /&gt;
&lt;br /&gt;
*All methods&#039; indentation must not exceed a deep level of 3. Methods, whose indentation exceeds 3 in deep level, decrease readability, maintainability and also increase complexity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;(HasAccess)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;for &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;i = 0; i &amp;amp;lt; COUNT; i++)&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;list[i].IsTrue)&amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;switch &amp;lt;/font&amp;gt; (resourceType)&amp;lt;/font&amp;gt;&lt;br /&gt;
::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
:::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Arial, sans-serif&amp;quot;&amp;gt;=&amp;amp;gt; Code inside this block are too deep&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1pt solid rgb(0, 0, 0); padding: 5px; background: rgb(192, 192, 192) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 255);&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Tips:&#039;&#039;&#039; &amp;lt;br&amp;gt; There are 2 methods for reducing the deep level of code block: &lt;br /&gt;
&lt;br /&gt;
*Reorganizing if statement&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Original code:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;void &amp;lt;/font&amp;gt;SampleMethod(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;bool &amp;lt;/font&amp;gt;someCondition)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;(someCondition)&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;for &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;i = 0; i &amp;amp;lt; COUNT; i++)&amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Changed code:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;void &amp;lt;/font&amp;gt;SampleMethod(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;bool &amp;lt;/font&amp;gt;someCondition)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt; (!someCondition) &amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;return &amp;lt;/font&amp;gt;;&amp;lt;/font&amp;gt; &lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;for &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;i = 0; i &amp;amp;lt; COUNT; i++)&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=&amp;amp;gt; The indentation&#039;s deep level has been decreased by 1. &lt;br /&gt;
&lt;br /&gt;
*Creating private method&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Original code:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;void &amp;lt;/font&amp;gt;SampleMethod(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;bool &amp;lt;/font&amp;gt;someCondition)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;(HasAccess)&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;for &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;i = 0; i &amp;amp;lt; COUNT; i++)&amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;(list[i].IsTrue)&amp;lt;/font&amp;gt;&lt;br /&gt;
::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
:::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;foreach &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;value &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;in &amp;lt;/font&amp;gt; list[i].Values)&amp;lt;/font&amp;gt;&lt;br /&gt;
:::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;(value &amp;amp;gt; 0)&amp;lt;/font&amp;gt;&lt;br /&gt;
::::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
:::::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;for &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;j = 0; j &amp;amp;lt; value; j++)&amp;lt;/font&amp;gt;&lt;br /&gt;
:::::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::::::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;(anotherCondition)&amp;lt;/font&amp;gt;&lt;br /&gt;
::::::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
::::::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
:::::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
::::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
:::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Changed code:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;void &amp;lt;/font&amp;gt;SampleMethod(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;bool &amp;lt;/font&amp;gt;someCondition)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;(HasAccess)&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;for &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;i = 0; i &amp;amp;lt; COUNT; i++)&amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;(list[i].IsTrue)&amp;lt;/font&amp;gt;&lt;br /&gt;
::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
:::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;ProcessValues(list[i].Values);&amp;lt;/font&amp;gt; &lt;br /&gt;
::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;void &amp;lt;/font&amp;gt;ProcessValues(&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;List&amp;lt;/font&amp;gt;&amp;amp;lt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int&amp;lt;/font&amp;gt;&amp;amp;gt; values)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;foreach&amp;lt;/font&amp;gt; (&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;value &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;in &amp;lt;/font&amp;gt;values)&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;(value &amp;amp;gt; 0)&amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;for &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;j = 0; j &amp;amp;lt; value; j++)&amp;lt;/font&amp;gt;&lt;br /&gt;
::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
:::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;(anotherCondition)&amp;lt;/font&amp;gt;&lt;br /&gt;
:::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
:::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
::::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=&amp;amp;gt; The indentation&#039;s deep level is dreased more than 1 &lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Attribute declaration ====&lt;br /&gt;
&lt;br /&gt;
*For elements that have more than one Attribute declaration, then each &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;Attribute&amp;lt;/font&amp;gt; must be put on one line.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;[&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Serializable&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;STAThread&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Obsolete&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#a31515&amp;quot;&amp;gt;&amp;quot;This class is obsolete. Use class Abc instead.&amp;quot;&amp;lt;/font&amp;gt;)]&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;SampleClass&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;[&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Serializable&amp;lt;/font&amp;gt;]&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;[&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;STAThread&amp;lt;/font&amp;gt;]&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;[&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Obsolete&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#a31515&amp;quot;&amp;gt;&amp;quot;This class is obsolete. Use class Abc instead.&amp;quot;&amp;lt;/font&amp;gt;)]&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;SampleClass&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Coding guidelines ==&lt;br /&gt;
&lt;br /&gt;
=== Basic language usage ===&lt;br /&gt;
&lt;br /&gt;
==== Access modifier ====&lt;br /&gt;
&lt;br /&gt;
*All access modifier must be explicitly given, except in interface&#039;s declaration where &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot;&amp;gt;public&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; is undertood by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;SampleClass&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;sampleInt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;void &amp;lt;/font&amp;gt;SampleMethod()&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Variables and Types ====&lt;br /&gt;
&lt;br /&gt;
*If possible, initialize variables at declaration time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int &amp;lt;/font&amp;gt;primaryId = 0;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string &amp;lt;/font&amp;gt;sampleString = &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string&amp;lt;/font&amp;gt;.Empty;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;List&amp;lt;/font&amp;gt;&amp;amp;lt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int&amp;lt;/font&amp;gt;&amp;amp;gt; sampleList = &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;new&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;List&amp;lt;/font&amp;gt;&amp;amp;lt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;int&amp;lt;/font&amp;gt;&amp;amp;gt;();&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Must use fully qualified name of types, declare the type by using statements. In case there are duplication in type&#039;s name, define aliases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ResourceCollectionPager&amp;lt;/font&amp;gt; pager = CatGlobe.Framework.Services.&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;SessionManager&amp;lt;/font&amp;gt;.Current.DataModule.Get&amp;amp;lt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ResourceCollectionPager&amp;lt;/font&amp;gt;&amp;amp;gt;(Request[&amp;lt;font color=&amp;quot;#a31515&amp;quot;&amp;gt;&amp;quot;sessionid&amp;quot;&amp;lt;/font&amp;gt;]);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using&amp;lt;/font&amp;gt; CatGlobe.Framework.Services;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ResourceCollectionPager&amp;lt;/font&amp;gt; pager = &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;SessionManager&amp;lt;/font&amp;gt;.Current.DataModule.Get&amp;amp;lt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;ResourceCollectionPager&amp;lt;/font&amp;gt;&amp;amp;gt;(Request[&amp;lt;font color=&amp;quot;#a31515&amp;quot;&amp;gt;&amp;quot;sessionid&amp;quot;&amp;lt;/font&amp;gt;]);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1pt solid rgb(0, 0, 0); padding: 5px; background: rgb(192, 192, 192) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 255);&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Tips:&#039;&#039;&#039; &amp;lt;br&amp;gt; Always choose “using” over fully qualified name from Resolve menu of Visual Studio. [[Image:Coding Guidelines Common rules 1.0 html m6738e672.png|center|400px|Resolve menu of VS2008]] &lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Example of using alias:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;Threading = System.Threading;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;Timers = System.Timers;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;Web = System.Web.UI;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;namespace&amp;lt;/font&amp;gt;CatGlobe.DataAccess&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;public &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;class &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;SampleClass&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;Threading.&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Timer&amp;lt;/font&amp;gt; _threadTimer1;&amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;Timers.&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Timer&amp;lt;/font&amp;gt; _threadTimer2;&amp;lt;/font&amp;gt;&lt;br /&gt;
:::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;private &amp;lt;/font&amp;gt;Web.&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Timer&amp;lt;/font&amp;gt; _threadTimer3;&amp;lt;/font&amp;gt; &lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Constants and Literals ====&lt;br /&gt;
&lt;br /&gt;
*Never hardcoded strings that will be presented to end-users. Use &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#33a3a3&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;Resoures&amp;lt;/font&amp;gt; class instead.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not&amp;lt;/u&amp;gt;&#039;&#039;: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;&amp;amp;lt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#a31515&amp;quot;&amp;gt;span&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;&amp;amp;gt;&amp;lt;/font&amp;gt;Username&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;&amp;amp;lt;/&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#a31515&amp;quot;&amp;gt;span&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must&amp;lt;/u&amp;gt;&#039;&#039;: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;&amp;amp;lt;&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#a31515&amp;quot;&amp;gt;span&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;amp;lt;%&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;=&amp;lt;/font&amp;gt;Resources.Username&amp;amp;nbsp;%&amp;amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;&amp;amp;lt;/&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#a31515&amp;quot;&amp;gt;span&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Try to use @ instead escape characters symbol&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should:&amp;lt;/u&amp;gt;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string &amp;lt;/font&amp;gt;filename = &amp;lt;font color=&amp;quot;#a31515&amp;quot;&amp;gt;@&amp;quot;D:\test\test.xml&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
==== Direct cast vs. &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;as&amp;lt;/font&amp;gt; keyword ====&lt;br /&gt;
&lt;br /&gt;
Following code block: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CustomClass&amp;lt;/font&amp;gt; a = src &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;as &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CustomClass&amp;lt;/font&amp;gt;;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
can be considered the same as the code block below: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;if &amp;lt;/font&amp;gt;(src &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;is&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CustomClass&amp;lt;/font&amp;gt;) &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;return &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CustomClass&amp;lt;/font&amp;gt;)src;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;else &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;return &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;null&amp;lt;/font&amp;gt;;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Consequently, it is encouraged to use &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;as&amp;lt;/font&amp;gt; keyword over directcasting, because it is neat and safer. &lt;br /&gt;
&lt;br /&gt;
=== Exceptions handling ===&lt;br /&gt;
&lt;br /&gt;
*Catch least generic exception first&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not:&amp;lt;/u&amp;gt;&#039;&#039; &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;try&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;using &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;FileStream&amp;lt;/font&amp;gt; fs = &amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;new&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;FileStream&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#a31515&amp;quot;&amp;gt;@&amp;quot;&amp;lt;/font&amp;gt;D:\test.xml&amp;lt;font color=&amp;quot;#a31515&amp;quot;&amp;gt;&amp;quot;&amp;lt;/font&amp;gt;)) { }&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;catch &amp;lt;/font&amp;gt; (&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Exception&amp;lt;/font&amp;gt;) { }&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;catch &amp;lt;/font&amp;gt; (&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;IOException&amp;lt;/font&amp;gt;)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Arial&amp;quot; color=&amp;quot;#ff0000&amp;quot;&amp;gt;=&amp;amp;gt;Unreachable code&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Do not use exception for controlling flows, instead try to validate input parameter. Most of the time exceptions can be prevented by proper input validation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Should not&amp;lt;/u&amp;gt;&#039;&#039;: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;string &amp;lt;/font&amp;gt;input = &amp;lt;font color=&amp;quot;#a31515&amp;quot;&amp;gt;&amp;quot;something&amp;quot;&amp;lt;/font&amp;gt;;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;try&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;DoWork(input);&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;catch &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Exception&amp;lt;/font&amp;gt; e)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;DoAlternateWork(input);&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*All exception must be re-thrown, the outest layer (usually GUI win-form or web-form) must responsible for handling the exception properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not&amp;lt;/u&amp;gt;&#039;&#039;: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;try&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;DoWork();&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;catch &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Exception&amp;lt;/font&amp;gt; e)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;// do nothing&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*If not creating a wrapper exception, use “&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;throw&amp;lt;/font&amp;gt;” instead of “&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;throw&amp;lt;/font&amp;gt;&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;e&amp;lt;/font&amp;gt;” to reserve the call-stack. “&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;throw&amp;lt;/font&amp;gt;” statement&#039;s stack trace points to the code place that actually causes the error, while “&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;throw&amp;lt;/font&amp;gt;&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;e&amp;lt;/font&amp;gt;”&#039;s stack trace points to the location of the “&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;throw&amp;lt;/font&amp;gt;&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;e&amp;lt;/font&amp;gt;” statement only.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Must not&amp;lt;/u&amp;gt;&#039;&#039;: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;catch &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;IOException&amp;lt;/font&amp;gt; ioe)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Logger&amp;lt;/font&amp;gt;.LogError(ioe);&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;throw &amp;lt;/font&amp;gt;ioe; &amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Arial, sans-serif&amp;quot;&amp;gt;=&amp;amp;gt; Must be&amp;lt;/font&amp;gt; throw;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;Correct&amp;lt;/u&amp;gt;&#039;&#039;: &amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;catch &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;IOException&amp;lt;/font&amp;gt; ioe)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Logger&amp;lt;/font&amp;gt;.LogError(ioe);&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;throw &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;new &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;CustomeException&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#a31515&amp;quot;&amp;gt;&amp;quot;error&amp;quot;&amp;lt;/font&amp;gt;, ioe);&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;catch &amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;IOException&amp;lt;/font&amp;gt; ioe)&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;{ &amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2b91af&amp;quot;&amp;gt;Logger&amp;lt;/font&amp;gt;.LogError(ioe);&amp;lt;/font&amp;gt;&lt;br /&gt;
::&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#0000ff&amp;quot;&amp;gt;throw&amp;lt;/font&amp;gt;;&amp;lt;/font&amp;gt; &lt;br /&gt;
:&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New, monospace&amp;quot; size=&amp;quot;2&amp;quot; color=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size: 9pt;&amp;quot;&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Document revisions ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Version No.&#039;&#039;&#039; &lt;br /&gt;
| &#039;&#039;&#039;Date&#039;&#039;&#039; &lt;br /&gt;
| &#039;&#039;&#039;Changed By&#039;&#039;&#039; &lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 &lt;br /&gt;
| 10.07.2008 &lt;br /&gt;
| Nguyen Trung Chinh &lt;br /&gt;
| Copy from http://blogs.msdn.com/brada/articles/361363.aspx&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 &lt;br /&gt;
| 22.08.2008 &lt;br /&gt;
| Nguyen Trung Chinh &lt;br /&gt;
| Refine from original document, add more applicable rules&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 &lt;br /&gt;
| 25.08.2008 &lt;br /&gt;
| Nguyen Trung Chinh &lt;br /&gt;
| Fix for 0.1 after reviews of Dennis and Thuan&lt;br /&gt;
|-&lt;br /&gt;
| 0.2 &lt;br /&gt;
| 08.10.2008 &lt;br /&gt;
| Nguyen Trung Chinh &lt;br /&gt;
| Add section 3.5 and 4&lt;br /&gt;
|-&lt;br /&gt;
| 0.3 &lt;br /&gt;
| 13.10.2008 &lt;br /&gt;
| Nguyen Trung Chinh &lt;br /&gt;
| Finish section 4&lt;br /&gt;
|-&lt;br /&gt;
| 1.0 &lt;br /&gt;
| 14.11.2008 &lt;br /&gt;
| Nguyen Trung Chinh &lt;br /&gt;
| Finalize version 1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=CG_Grid%27s_height&amp;diff=24780</id>
		<title>CG Grid&#039;s height</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=CG_Grid%27s_height&amp;diff=24780"/>
		<updated>2013-10-18T04:39:16Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
Hi, &lt;br /&gt;
&lt;br /&gt;
To simplify this, I have attached new funtion to grid object. Therefore, from now on, you can reset grid height as&lt;br /&gt;
&lt;br /&gt;
grid.resizeHeight( value&amp;amp;nbsp;);&lt;br /&gt;
&lt;br /&gt;
------------------------------------------&lt;br /&gt;
&lt;br /&gt;
These days i have fixed some bugs related to LnF in FF. Most of them came from the CGGrid which overlapped other below content. For example, in Data Import wizard or Access Dialog. When i looked at the code, it had code to set the grid&#039;s height as we normally does in catglobe.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But why did not it work? In reality, sometime it did, sometime not. What did we do was, i mentioned here was a [[JQuery]] structure:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#&amp;quot; + grid.Id + &amp;quot;_mr&amp;quot;).height(h);&amp;lt;br&amp;gt;$(&amp;quot;#&amp;quot; + grid.Id + &amp;quot;_mc&amp;quot;).height(h);&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What it did was to set height for the row and cell containing the main content of grid. HOWEVER, the outer parts of them are tbody and table, they were still 100% height.&amp;amp;nbsp; That is the point.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
How to fix it? Simple, make sure you also set height for tbody and table as well.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Code snippest:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#&amp;quot; + grid.Id + &amp;quot;_mtb&amp;quot;).height(h);&amp;lt;br&amp;gt;$(&amp;quot;#&amp;quot; + grid.Id + &amp;quot;_main&amp;quot;).height(h);&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Business_logic_of_Require_property_in_Questionnaire_Template&amp;diff=24779</id>
		<title>Business logic of Require property in Questionnaire Template</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Business_logic_of_Require_property_in_Questionnaire_Template&amp;diff=24779"/>
		<updated>2013-10-18T04:38:48Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== Description == &lt;br /&gt;
This property existed in both questionnaire template&#039;s properties and question&#039;s properties .&lt;br /&gt;
*Setting for questionnaire :&lt;br /&gt;
[[Image:QnaireRequired.JPG‎]]&lt;br /&gt;
*Setting for question (non-Grid question)&lt;br /&gt;
[[Image:NonGridRequired.JPG]]&lt;br /&gt;
*Setting for question (Grid question)&lt;br /&gt;
[[Image:GridRequired.JPG]]&lt;br /&gt;
&lt;br /&gt;
*Using in .NET&lt;br /&gt;
CatGlobe.Domain.Questionnaires.PropertyType.Required &lt;br /&gt;
&lt;br /&gt;
*Using in Java&lt;br /&gt;
Property.REQUIRED&lt;br /&gt;
&lt;br /&gt;
== Business logic ==&lt;br /&gt;
=== Required as Questionnaire&#039;s property ===&lt;br /&gt;
*If this property is checked , it means that all the question in the questionnaire template , which are not specified Required property explicitly , will require the users answer it and they can&#039;t go to another question without answering . &lt;br /&gt;
Behind the code : the template will has property REQUIRED with the property&#039;s value is &amp;quot;true&amp;quot; . &lt;br /&gt;
*If this property is unchecked , it means that all the question in the questionnaire template , which are not specified Required property explicitly,will not require users answer it. &lt;br /&gt;
Behind the code :   &#039;&#039;&#039;the template will has property NOT_REQUIRE with the property&#039;s value is &amp;quot;true&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
=== Required as Question&#039;s property === &lt;br /&gt;
This property is inherited from the value of property Required in a questionnaire. However, a question can set anew for this property through its Required property, and this value is only applied to this question. &lt;br /&gt;
*Inherited from Required property of questionnaire template : &lt;br /&gt;
[[Image:Inherited.JPG]]&lt;br /&gt;
&amp;lt;br&amp;gt;In this case the there is not both REQUIRED and NOT_REQUIRED property register  in question&#039;s property (the existed one will be removed). So the question will inherited from the Required property of the questionnaire template]&lt;br /&gt;
*Required property is checked &lt;br /&gt;
[[Image:Checked.JPG]]&lt;br /&gt;
&amp;lt;br&amp;gt;In this case , the question will has REQUIRED property with the property&#039;s value is &amp;quot;true&amp;quot;&lt;br /&gt;
*Required property is unchecked &lt;br /&gt;
[[Image:UnChecked.JPG]]&lt;br /&gt;
&amp;lt;br&amp;gt;In this case , &#039;&#039;&#039;the question will has NOT_REQUIRED property with the property&#039;s value is &amp;quot;true&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
*If the question is a GRID question ( single grid , multi grid , scale grid , text grid) , users need to define which sub questions will be required . &#039;&#039;&#039;The range will be save to the value of correlative property&#039;&#039;&#039; (REQUIRED or NOT_REQUIRED).&lt;br /&gt;
&lt;br /&gt;
== Working with Required property in .NET side ==&lt;br /&gt;
=== This example shows how to use the Required property of grid question and apply it to related sub question ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            // Apply the required property if set&lt;br /&gt;
            QuestionProperty requiredProperty = q.GetProperty(PropertyType.Required);&lt;br /&gt;
            if (requiredProperty != null &amp;amp;&amp;amp; !string.IsNullOrEmpty(requiredProperty.Value))&lt;br /&gt;
            {&lt;br /&gt;
               // Parse the property&#039;s value into ranges&lt;br /&gt;
               Ranges requiredRanges = new Ranges(requiredProperty.Value);&lt;br /&gt;
&lt;br /&gt;
               // For each range run through the integers contained in the range&lt;br /&gt;
               // and set the required property to true&lt;br /&gt;
               foreach (Range r in requiredRanges)&lt;br /&gt;
                  for (int j = r.From; j &amp;lt;= r.To; j++)&lt;br /&gt;
                     //Tho : this if expression is to make sure that we only take valid&lt;br /&gt;
                     //sub question index .  Some old questionnaire template has invalid property value&lt;br /&gt;
                     if ( j&amp;gt;-1 &amp;amp;&amp;amp; j &amp;lt; q.subQuestions.Count)&lt;br /&gt;
                        q.subQuestions[j].Required = true;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Apply the not required property if set&lt;br /&gt;
            QuestionProperty notRequiredProperty = q.GetProperty(PropertyType.NotRequired);&lt;br /&gt;
            if (notRequiredProperty != null &amp;amp;&amp;amp; !string.IsNullOrEmpty(notRequiredProperty.Value))&lt;br /&gt;
            {&lt;br /&gt;
               // Parse the property&#039;s value into ranges&lt;br /&gt;
               Ranges notRequiredRanges = new Ranges(notRequiredProperty.Value);&lt;br /&gt;
&lt;br /&gt;
               // For each range run through the integers contained in the range&lt;br /&gt;
               // and set the required property to false&lt;br /&gt;
               foreach (Range r in notRequiredRanges)&lt;br /&gt;
               {&lt;br /&gt;
                  if (r.To &amp;gt;= q.SubQuestions.Count)&lt;br /&gt;
                     r.To = q.SubQuestions.Count - 1;&lt;br /&gt;
                  for (int j = r.From; j &amp;lt;= r.To; j++)&lt;br /&gt;
                     //Tho : this if expression is to make sure that we only take valid&lt;br /&gt;
                     //sub question index .  Some old questionnaire template has invalid property value&lt;br /&gt;
                     if (j &amp;gt; -1 &amp;amp;&amp;amp; j &amp;lt; q.subQuestions.Count)&lt;br /&gt;
                        q.subQuestions[j].Required = false;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== This example show how to apply Required property of questionnaire template to question and register it to client side ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
foreach (QuestionnaireProperty p in Questionnaire.Properties)&lt;br /&gt;
{&lt;br /&gt;
switch (p.Type)&lt;br /&gt;
//Before inherited from Questionnaire properties , you must make sure that the question does not have both Required and NotRequired property&lt;br /&gt;
         case PropertyType.Required:&lt;br /&gt;
                  if (Question.IsGrid())&lt;br /&gt;
                  {&lt;br /&gt;
                     int i = 0;&lt;br /&gt;
                     foreach (SubQuestion sq in Question.SubQuestions)&lt;br /&gt;
                     {&lt;br /&gt;
                        if (sq.Visible)&lt;br /&gt;
                        {&lt;br /&gt;
                           script.Append(&amp;quot;// Require answer for &amp;quot;);&lt;br /&gt;
                           script.Append(sq.Question.Label);&lt;br /&gt;
                           script.Append(&amp;quot;[&amp;quot;);&lt;br /&gt;
                           script.Append(sq.GridNumber);&lt;br /&gt;
                           script.Append(&amp;quot;]\n&amp;quot;);&lt;br /&gt;
                           script.AppendFormat(&amp;quot;quest.questions[{0}].required = true;\n&amp;quot;, i++);&lt;br /&gt;
                        }&lt;br /&gt;
                     }&lt;br /&gt;
                  }&lt;br /&gt;
                  else&lt;br /&gt;
                  {&lt;br /&gt;
                     script.Append(&amp;quot;quest.required = true;\n&amp;quot;);&lt;br /&gt;
                  }&lt;br /&gt;
                  break;&lt;br /&gt;
          case PropertyType.NotRequired:&lt;br /&gt;
                  if (Question.IsGrid())&lt;br /&gt;
                  {&lt;br /&gt;
                     int i = 0;&lt;br /&gt;
                     foreach (SubQuestion sq in Question.SubQuestions)&lt;br /&gt;
                     {&lt;br /&gt;
                        if (sq.Visible)&lt;br /&gt;
                        {&lt;br /&gt;
                           script.Append(&amp;quot;// Not require answer for &amp;quot;);&lt;br /&gt;
                           script.Append(sq.Question.Label);&lt;br /&gt;
                           script.Append(&amp;quot;[&amp;quot;);&lt;br /&gt;
                           script.Append(sq.GridNumber);&lt;br /&gt;
                           script.Append(&amp;quot;]\n&amp;quot;);&lt;br /&gt;
                           script.AppendFormat(&amp;quot;quest.questions[{0}].required = false;\n&amp;quot;, i++);&lt;br /&gt;
                        }&lt;br /&gt;
                     }&lt;br /&gt;
                  }&lt;br /&gt;
                  else&lt;br /&gt;
                  {&lt;br /&gt;
                     script.Append(&amp;quot;quest.required = false;\n&amp;quot;);&lt;br /&gt;
                  }&lt;br /&gt;
                  break;&lt;br /&gt;
//...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== This example shows how to apply Required property of question register it to client side ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
foreach (QuestionProperty p in Question.Properties)&lt;br /&gt;
{&lt;br /&gt;
// ....&lt;br /&gt;
       switch(p.Type)&lt;br /&gt;
               case PropertyType.NotRequired:&lt;br /&gt;
                  if (Question.IsGrid())&lt;br /&gt;
                  {&lt;br /&gt;
                     ranges = new Ranges(p.Value);&lt;br /&gt;
&lt;br /&gt;
                     int i = 0;&lt;br /&gt;
                     foreach (SubQuestion sq in Question.SubQuestions)&lt;br /&gt;
                     {&lt;br /&gt;
                        if (sq.Visible &amp;amp;&amp;amp; ranges.Contains(sq.GridNumber))&lt;br /&gt;
                        {&lt;br /&gt;
                           script.Append(&amp;quot;// Not require answer for &amp;quot;);&lt;br /&gt;
                           script.Append(sq.Question.Label);&lt;br /&gt;
                           script.Append(&amp;quot;[&amp;quot;);&lt;br /&gt;
                           script.Append(sq.GridNumber);&lt;br /&gt;
                           script.Append(&amp;quot;]\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
                           script.AppendFormat(&amp;quot;quest.questions[{0}].required = false;\n&amp;quot;, i);&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        if (sq.Visible)&lt;br /&gt;
                        {&lt;br /&gt;
                           i++;&lt;br /&gt;
                        }&lt;br /&gt;
                     }&lt;br /&gt;
                  }&lt;br /&gt;
                  else&lt;br /&gt;
                  {&lt;br /&gt;
                     script.Append(&amp;quot;quest.required = false;\n&amp;quot;);&lt;br /&gt;
                  }&lt;br /&gt;
                  break;&lt;br /&gt;
               case PropertyType.Required:&lt;br /&gt;
                  if (Question.IsGrid())&lt;br /&gt;
                  {&lt;br /&gt;
                     ranges = new Ranges(p.Value);&lt;br /&gt;
&lt;br /&gt;
                     int i = 0;&lt;br /&gt;
                     foreach (SubQuestion sq in Question.SubQuestions)&lt;br /&gt;
                     {&lt;br /&gt;
                        if (sq.Visible &amp;amp;&amp;amp; ranges.Contains(sq.GridNumber))&lt;br /&gt;
                        {&lt;br /&gt;
                           script.Append(&amp;quot;// Require answer for &amp;quot;);&lt;br /&gt;
                           script.Append(sq.Question.Label);&lt;br /&gt;
                           script.Append(&amp;quot;[&amp;quot;);&lt;br /&gt;
                           script.Append(sq.GridNumber);&lt;br /&gt;
                           script.Append(&amp;quot;]\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
                           script.AppendFormat(&amp;quot;quest.questions[{0}].required = true;\n&amp;quot;, i);&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        if (sq.Visible)&lt;br /&gt;
                        {&lt;br /&gt;
                           i++;&lt;br /&gt;
                        }&lt;br /&gt;
                     }&lt;br /&gt;
                  }&lt;br /&gt;
                  else&lt;br /&gt;
                  {&lt;br /&gt;
                     script.Append(&amp;quot;quest.required = true;\n&amp;quot;);&lt;br /&gt;
                  }&lt;br /&gt;
                  break;&lt;br /&gt;
//...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
 [[category:Technical guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Roadmap&amp;diff=24776</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Roadmap&amp;diff=24776"/>
		<updated>2013-10-18T03:59:51Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
[[Category:Archive]]&lt;br /&gt;
= Roadmap diagram  =&lt;br /&gt;
&lt;br /&gt;
[[Image:Roadmap Graphics 2010-03-05.png]]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Version 5.8.1 (SP1) - Catglobe Heisenberg  =&lt;br /&gt;
&lt;br /&gt;
Version has already been released.&amp;lt;br&amp;gt;You can find release notes here: [[Release Notes version 5.8.1 Heisenberg|Release_Notes_version_5.8.1_Heisenberg]] &lt;br /&gt;
&lt;br /&gt;
= Version 5.8.2 (SP2) - Catglobe Heisenberg  =&lt;br /&gt;
&lt;br /&gt;
Catglobe version 5.8.2 Heisenberg (SP2) is the second minor iteration on top of the major release of v.5.8 January 2010.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This minor release focuses on a few topics, most significantly the new questionnaire viewer will be release for production in this version. The new questionnaire viewer sets the new standard for how to display question in Catglobe and will allow for a lot more customization by the graphical user interface including placing multiple questions per page.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Secondly the version will focus on two other major areas besides a number of minor fixes and improvements, the two other major areas is a project within the CGScript engine allowing for manipulating huge amount of data and improvements in the PDF output from tabulation jobs. &amp;lt;br&amp;gt;The project within CGScript will provide an efficient way for manipulation huge amounts of data from scripting. This solution will allow panel managers to move data and convert it for hundred of thousands of panel members at a time.&amp;lt;br&amp;gt;The solution for PDF&amp;amp;nbsp;output is some long needed modification for making the output format so customizable that it will be a feasible way for many users for creating table output from surveys for the clients.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== CG Script engine&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
Project including description... &lt;br /&gt;
&lt;br /&gt;
Integration to external systems using webservices. &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 ways to go about this:&#039;&#039;&#039;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#Putting data into Catglobe&amp;lt;br&amp;gt; &lt;br /&gt;
##Catglobe pulls data from an external system using a webservice provided by the external system.&amp;lt;br&amp;gt; &lt;br /&gt;
##External system pushes data into Catglobe using a webservice provided by Catglobe calling a workflow with parameters. (Consider batch with many records at a time)&amp;lt;br&amp;gt; &lt;br /&gt;
#Getting data from Catglobe into an external system &lt;br /&gt;
##External system pulls data from Catglobe using a webservice provided by Catglobe &lt;br /&gt;
##Catglobe pushes data into an external system using a webservice provided by External System Provider.&lt;br /&gt;
&lt;br /&gt;
Case 2.1 is already supported. Case 1.1 and 2.2 is roughly the same but large batches of data should be considered. Case 1.2 is not yet supported. &lt;br /&gt;
&lt;br /&gt;
=== Projects  ===&lt;br /&gt;
Yet to be written&lt;br /&gt;
&lt;br /&gt;
== Report&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
Project including description... &lt;br /&gt;
&lt;br /&gt;
=== Projects  ===&lt;br /&gt;
Yet to be written&lt;br /&gt;
&lt;br /&gt;
== Survey&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
Description description description.&amp;lt;br&amp;gt;Description description description&amp;lt;br&amp;gt;Description description description&amp;lt;br&amp;gt;Description description description&amp;lt;br&amp;gt;Description description description&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Projects  ===&lt;br /&gt;
&lt;br /&gt;
VNXXXXYYY - Multiple question per page&amp;lt;br&amp;gt;Allowing for placing multiple question on a single page for questionnaire. Including support for condition for helping developers not use conditions which should have effect internally on a page.&amp;lt;br&amp;gt; VNZZZZYYYY - Blah blah &lt;br /&gt;
&lt;br /&gt;
Will help on this...&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Release&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
Release date primo September&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Version 6.0 - Catglobe Tiger  =&lt;br /&gt;
&lt;br /&gt;
Version 6.0 Catglobe Tiger &lt;br /&gt;
&lt;br /&gt;
== CG Script engine&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
Report spreadsheet API&amp;lt;br&amp;gt;Invoice API&amp;lt;br&amp;gt;Call of work flows from script&amp;lt;br&amp;gt;Triggers added for questionnaire and project events &lt;br /&gt;
&lt;br /&gt;
Scripted solution for import allowing us to import a pre-specied job from CGScript with away of controlling the file to be used. Purpose is to predefine a setup allowing a users to only upload a file and then have Catglobe do the rest using a specified workflow. &lt;br /&gt;
&lt;br /&gt;
=== Projects&amp;lt;br&amp;gt;  ===&lt;br /&gt;
&lt;br /&gt;
Yet to come&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CatTask&amp;lt;br&amp;gt;  ==&lt;br /&gt;
New CatTask engine implemented. Providing better failover solution for CatTask service system.&lt;br /&gt;
CatTask scheduler allowing for much more fine grained schedule, allowing the user to select weekdays and time of day and combine this in a much more flexible manor.&lt;br /&gt;
&lt;br /&gt;
== Survey&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
User experience improvements for questionnare editor &lt;br /&gt;
&lt;br /&gt;
=== Projects  ===&lt;br /&gt;
&lt;br /&gt;
Yet to come&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Usability&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
New import module &lt;br /&gt;
&lt;br /&gt;
=== Projects  ===&lt;br /&gt;
&lt;br /&gt;
Yet to come&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Report&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
New report engine &lt;br /&gt;
&lt;br /&gt;
=== Projects  ===&lt;br /&gt;
&lt;br /&gt;
Yet to come&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Framework&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
CatTask moved to new CatTask &lt;br /&gt;
&lt;br /&gt;
=== Projects  ===&lt;br /&gt;
&lt;br /&gt;
Yet to come&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Release&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
Release date ultimo December&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Version 6.0.1 (SP1) - Catglobe Tiger  =&lt;br /&gt;
&lt;br /&gt;
Blah blah blah&lt;br /&gt;
&lt;br /&gt;
= Version 6.0.2 (SP2) - Catglobe Tiger  =&lt;br /&gt;
&lt;br /&gt;
Blah blah blah&lt;br /&gt;
&lt;br /&gt;
= Version 6.1 - Catglobe Panther  =&lt;br /&gt;
&lt;br /&gt;
Blah blah blah&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Icon_LnF&amp;diff=24775</id>
		<title>Icon LnF</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Icon_LnF&amp;diff=24775"/>
		<updated>2013-10-18T03:57:06Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== Icon LnF  ==&lt;br /&gt;
&lt;br /&gt;
#Icons should have two states; normal and mouse over. The mouse over effect is a 3d shadow effect! &lt;br /&gt;
#All tool bar icons need 3 images specified; normal, hover, and disable! &lt;br /&gt;
#Buttons in tool bars that cannot be used should be grayed out, for example delete cannot be used until an item is chosen so it is grayed out until something is chosen. Tool tips should be visible on grayed out buttons. &lt;br /&gt;
#Tool tips must be added to all buttons that does not have text on the button. &lt;br /&gt;
#If the button text consists of more than one word then the first word is with a capital letter the following are with small letters. For example &amp;quot;Changed by&amp;quot;. &lt;br /&gt;
#There can never be buttons after a Pager Control in a tool bar. &lt;br /&gt;
#Some icons should always have the same image no matter where we see the icon; please refer to &amp;quot;[http://wiki.catglobe.com/index.php/Icon_LnF#What_icons_to_use What icons to use]&amp;quot;. If the icon is not available, please talk to Process group for getting assigned an icon! &lt;br /&gt;
#Icons must always be set in the same general order on all lists. Please refer to [http://wiki.catglobe.com/index.php/Icon_LnF#Order_of_Icons Order_of_Icons] to see the order in which icons must appear when you have an icon tool bar or equivalent! &lt;br /&gt;
#When we have 6 or more icons on a tool bar (or the dialogue is very small) we can choose to show some icons without the text label. Those icons that can be shown this way are marked with * in [http://wiki.catglobe.com/index.php/Icon_LnF#Order_of_Icons Order_of_Icons] &lt;br /&gt;
#Groups of tool bar buttons are separated by a vertical separator &lt;br /&gt;
#Do not show two icons button separators next to each other - if e.g. no buttons with access in between! &lt;br /&gt;
#Do not show icon button separator at start or end without buttons on each side.&lt;br /&gt;
&lt;br /&gt;
== What icons to use  ==&lt;br /&gt;
&lt;br /&gt;
Icons is grouped based on the their function or number of use in each modules. Click on each group to see more details. &lt;br /&gt;
&lt;br /&gt;
=== [[Project tree icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Company.gif]] &lt;br /&gt;
| [[Image:facility.gif]]  &lt;br /&gt;
| [[Image:user.gif]]  &lt;br /&gt;
| [[Image:Grouptree.gif]] &lt;br /&gt;
| [[Image:Sitetree.gif]]  &lt;br /&gt;
| [[Image:Project.gif]] &lt;br /&gt;
| [[Image:Project complete.gif]] &lt;br /&gt;
| [[Image:Foldertree.gif]] &lt;br /&gt;
| [[Image:Task.gif]] &lt;br /&gt;
| [[Image:Task complete.gif]] &lt;br /&gt;
| [[Image:Taskset.gif]] &lt;br /&gt;
| [[Image:Workflow.gif]] &lt;br /&gt;
| [[Image:Communicator template.gif]] &lt;br /&gt;
| [[Image:Attachment.gif]] &lt;br /&gt;
| [[Image:DCS.gif]] &lt;br /&gt;
| [[Image:DCS export.gif]] &lt;br /&gt;
| [[Image:Product.gif]] &lt;br /&gt;
| [[Image:Shift.gif]] &lt;br /&gt;
| [[Image:Translationjob.gif]] &lt;br /&gt;
| [[Image:Codingjob.gif]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Issue.gif]]  &lt;br /&gt;
| [[Image:project_questionnaire.gif]]  &lt;br /&gt;
| [[Image:project_questionnaire_complete.gif]]  &lt;br /&gt;
| [[Image:Questionnaire.gif]]  &lt;br /&gt;
| [[Image:questionnaire_template.gif]]  &lt;br /&gt;
| [[Image:questionnaire_layout.gif]]  &lt;br /&gt;
| [[Image:questionnaire_layout_template.gif]]  &lt;br /&gt;
| [[Image:questionnaire_paper.gif]]  &lt;br /&gt;
| [[Image:sample_request.gif]]  &lt;br /&gt;
| [[Image:Diagram.gif]]  &lt;br /&gt;
| [[Image:Monitor.gif]]  &lt;br /&gt;
| [[Image:Report.gif]]  &lt;br /&gt;
| [[Image:report_template.gif]]  &lt;br /&gt;
| [[Image:spreadsheet.gif]]  &lt;br /&gt;
| [[Image:dashboard.gif]]  &lt;br /&gt;
| [[Image:nextpage.gif]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Attachment type icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Image access.gif]] &lt;br /&gt;
| [[Image:Image excel.gif]] &lt;br /&gt;
| [[Image:Image word.gif]] &lt;br /&gt;
| [[Image:Image ppt.gif]] &lt;br /&gt;
| [[Image:Image visio.gif]] &lt;br /&gt;
| [[Image:Image pdf.gif]] &lt;br /&gt;
| [[Image:Image html.gif]] &lt;br /&gt;
| [[Image:Image xml.gif]] &lt;br /&gt;
| [[Image:Image text.gif]] &lt;br /&gt;
| [[Image:Image bmp.gif]] &lt;br /&gt;
| [[Image:Image png.gif]] &lt;br /&gt;
| [[Image:Image gif.gif]] &lt;br /&gt;
| [[Image:Image jpg.gif]] &lt;br /&gt;
| [[Image:Image zip.gif]] &lt;br /&gt;
| [[Image:Image wma.gif]] &lt;br /&gt;
| [[Image:Notype.gif]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Common use icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[Image:Create.gif]] &lt;br /&gt;
| [[Image:CreateAndClose.gif]] &lt;br /&gt;
| [[Image:Delete.gif]] &lt;br /&gt;
| [[Image:Add.gif]] &lt;br /&gt;
| [[Image:Remove.gif]] &lt;br /&gt;
| [[Image:DeleteToRecycleBin.gif]] &lt;br /&gt;
| [[Image:RestoreBin.gif]] &lt;br /&gt;
| [[Image:DestroyBin.gif]] &lt;br /&gt;
| [[Image:DestroyBinAll.gif]] &lt;br /&gt;
| [[Image:Recycle bin.gif]] &lt;br /&gt;
| [[Image:Save.gif]] &lt;br /&gt;
| [[Image:SaveAndNew.gif]] &lt;br /&gt;
| [[Image:SaveAndClose.gif]] &lt;br /&gt;
| [[Image:SaveAndView.gif]] &lt;br /&gt;
| [[Image:SaveAs.gif]] &lt;br /&gt;
| [[Image:SaveAsTemplate.gif]] &lt;br /&gt;
| [[Image:Open.gif]] &lt;br /&gt;
| [[Image:OpenTemplate.gif]] &lt;br /&gt;
| [[Image:Viewoption.gif]] &lt;br /&gt;
| [[Image:SetDefault.gif]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Favorite.gif]] &lt;br /&gt;
| [[Image:View.gif]] &lt;br /&gt;
| [[Image:Cut.gif]] &lt;br /&gt;
| [[Image:Edit.gif]] &lt;br /&gt;
| [[Image:Editall.gif]] &lt;br /&gt;
| [[Image:Copy.gif]] &lt;br /&gt;
| [[Image:Paste.gif]] &lt;br /&gt;
| [[Image:Close.gif]] &lt;br /&gt;
| [[Image:Cancel.png]] &lt;br /&gt;
| [[Image:OK.gif]] &lt;br /&gt;
| [[Image:No.gif]] &lt;br /&gt;
| [[Image:Yes.gif]] &lt;br /&gt;
| [[Image:Search.gif]] &lt;br /&gt;
| [[Image:Find all.gif]] &lt;br /&gt;
| [[Image:Replace.gif]] &lt;br /&gt;
| [[Image:Replace all.gif]] &lt;br /&gt;
| [[Image:Refresh.gif]] &lt;br /&gt;
| [[Image:SortDescending.gif]] &lt;br /&gt;
| [[Image:SortAscending.gif]] &lt;br /&gt;
| [[Image:Run.gif]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Generate.gif]] &lt;br /&gt;
| [[Image:Download.gif]] &lt;br /&gt;
| [[Image:Upload.gif]] &lt;br /&gt;
| [[Image:Submit.gif]] &lt;br /&gt;
| [[Image:Submit close.gif]] &lt;br /&gt;
| [[Image:Submit new.gif]] &lt;br /&gt;
| [[Image:Undo.gif]] &lt;br /&gt;
| [[Image:ResetAll.gif]] &lt;br /&gt;
| [[Image:Redo.gif]] &lt;br /&gt;
| [[Image:AddImage.gif]] &lt;br /&gt;
| [[Image:AddAttachment.gif]] &lt;br /&gt;
| [[Image:Hyperlink.gif]] &lt;br /&gt;
| [[Image:Image.gif]] &lt;br /&gt;
| [[Image:Excel.gif]] &lt;br /&gt;
| [[Image:Pdf.gif]] &lt;br /&gt;
| [[Image:Powerpoint.gif]] &lt;br /&gt;
| [[Image:Lock.gif]] &lt;br /&gt;
| [[Image:Execute.gif]] &lt;br /&gt;
| [[Image:Constant.gif]] &lt;br /&gt;
| [[Image:TimeRegistration.gif]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Register_external_hour.gif]]&lt;br /&gt;
| [[Image:Chart.gif]] &lt;br /&gt;
| [[Image:Myportal.gif]] &lt;br /&gt;
| [[Image:Import.gif]] &lt;br /&gt;
| [[Image:Export.gif]] &lt;br /&gt;
| [[Image:Import export.gif]] &lt;br /&gt;
| [[Image:Help.gif]] &lt;br /&gt;
| [[Image:Tip.gif]] &lt;br /&gt;
| [[Image:Information.gif]] &lt;br /&gt;
| [[Image:Printer.gif]] &lt;br /&gt;
| [[Image:Data gear.gif]] &lt;br /&gt;
| [[Image:Schedule.png]] &lt;br /&gt;
| [[Image:Calculator.gif]] &lt;br /&gt;
| [[Image:ViewSlideshow plain.gif]] &lt;br /&gt;
| [[Image:Layoutxml.gif]]&lt;br /&gt;
| [[Image:Stable_plain.gif]] &lt;br /&gt;
| [[Image:UnStable_plain.gif]] &lt;br /&gt;
| [[Image:SetFail_plain.gif‎]] &lt;br /&gt;
| [[Image:Properties.gif]] &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Access icons]] ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[Image:Access.gif]] &lt;br /&gt;
| [[Image:Resource-access.gif]] &lt;br /&gt;
| [[Image:Navigation.gif]] &lt;br /&gt;
| [[Image:Inherit.gif]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Journal icons]] ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[Image:Journal.gif]] &lt;br /&gt;
| [[Image:Check checked.gif]] &lt;br /&gt;
| [[Image:Check none.gif]]&lt;br /&gt;
| [[Image:grant1.png]] &lt;br /&gt;
| [[Image:ungrant1.png]]&lt;br /&gt;
| [[Image:Select Some.gif]] &lt;br /&gt;
| [[Image:Select All.gif]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[User icons]] ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[Image:User.gif]] &lt;br /&gt;
| [[Image:AddUser.png]] &lt;br /&gt;
| [[Image:Edit2.gif]] &lt;br /&gt;
| [[Image:Protectdate.gif]] &lt;br /&gt;
| [[Image:Account.gif]] &lt;br /&gt;
| [[Image:group.gif]] &lt;br /&gt;
| [[Image:Add group.gif]]&lt;br /&gt;
| [[Image:view_user_plain.gif]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Navigation icons|Navigation &amp;amp;amp; Expand/Collapse icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:NavigateFirst.gif]] &lt;br /&gt;
| [[Image:NavigateLeft.gif]] &lt;br /&gt;
| [[Image:NavigateRight.gif]]&lt;br /&gt;
| [[Image:NavigateLast.gif]] &lt;br /&gt;
| [[Image:Navigate_left2.gif]]&lt;br /&gt;
| [[Image:Navigate_right2.gif]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Navigatesave_beginning.gif]] &lt;br /&gt;
| [[Image:Navigatesave_left.gif]] &lt;br /&gt;
| [[Image:Navigatesave_left2.gif]] &lt;br /&gt;
| [[Image:Navigatesave_right2.gif]] &lt;br /&gt;
| [[Image:Navigatesave_right.gif]] &lt;br /&gt;
| [[Image:Navigatesave_end.gif]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Image:UpArrow.gif]] &lt;br /&gt;
| [[Image:DownArrow.gif]] &lt;br /&gt;
| [[Image:LeftArrow.gif]] &lt;br /&gt;
| [[Image:RightArrow.gif]] &lt;br /&gt;
| [[Image:Hide.gif]] &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:left_circle.gif]] &lt;br /&gt;
| [[Image:right_circle.gif]] &lt;br /&gt;
| [[Image:up_circle.gif]] &lt;br /&gt;
| [[Image:down_circle.gif]] &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:up.gif]] &lt;br /&gt;
| [[Image:down.gif]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:left.gif]] &lt;br /&gt;
| [[Image:right.gif]] &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Editor icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Subscript.gif]] &lt;br /&gt;
| [[Image:Superscript.gif]] &lt;br /&gt;
| [[Image:Bullets.gif]] &lt;br /&gt;
| [[Image:Numberlist.gif]] &lt;br /&gt;
| [[Image:Table.gif]] &lt;br /&gt;
| [[Image:Aligncenter.gif]] &lt;br /&gt;
| [[Image:Alignleft.gif]] &lt;br /&gt;
| [[Image:Alignright.gif]] &lt;br /&gt;
| [[Image:Justify.gif]] &lt;br /&gt;
| [[Image:Top.gif]] &lt;br /&gt;
| [[Image:Bottom.gif]] &lt;br /&gt;
| [[Image:Middle.gif]] &lt;br /&gt;
| [[Image:Bold.gif]] &lt;br /&gt;
| [[Image:Italic.gif]] &lt;br /&gt;
| [[Image:Underline.gif]] &lt;br /&gt;
| [[Image:Fontcolor.gif]] &lt;br /&gt;
| [[Image:Bringfoward.gif]] &lt;br /&gt;
| [[Image:Sendbackward.gif]] &lt;br /&gt;
| [[Image:Bringtofront.gif]] &lt;br /&gt;
| [[Image:Sendtoback.gif]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Insertbreakpage.gif]] &lt;br /&gt;
| [[Image:Insertchart.gif]] &lt;br /&gt;
| [[Image:Insertpagelink.gif]] &lt;br /&gt;
| [[Image:Insert-Text-Box-1.gif]] &lt;br /&gt;
| [[Image:Newpagebefore.gif]] &lt;br /&gt;
| [[Image:Newpageafter.gif]] &lt;br /&gt;
| [[Image:Deletecurrentpage.gif]] &lt;br /&gt;
| [[Image:AddRow.gif]] &lt;br /&gt;
| [[Image:DeleteRow.gif]] &lt;br /&gt;
| [[Image:AddColumn.gif]] &lt;br /&gt;
| [[Image:DeleteColumn.gif]] &lt;br /&gt;
| [[Image:Moverowdown.gif‎]] &lt;br /&gt;
| [[Image:Moverowup.gif]] &lt;br /&gt;
| [[Image:Movecolumnleft.gif‎]] &lt;br /&gt;
| [[Image:Movecolumnright.gif‎]] &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Questionnaire icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Project questionnaire.gif]] &lt;br /&gt;
| [[Image:Project questionnaire complete.gif]] &lt;br /&gt;
| [[Image:Questionnaire.gif]] &lt;br /&gt;
| [[Image:Questionnaire template.gif]] &lt;br /&gt;
| [[Image:Questionnaire layout.gif]] &lt;br /&gt;
| [[Image:Questionnaire layout template.gif]] &lt;br /&gt;
| [[Image:Questionnaire datagrid.gif]] &lt;br /&gt;
| [[Image:QuestionGroup.gif]] &lt;br /&gt;
| [[Image:Questionnaire paper.gif]] &lt;br /&gt;
| [[Image:ViewSampleSize.gif]] &lt;br /&gt;
| [[Image:ViewFilter.gif]] &lt;br /&gt;
| [[Image:ViewCross.gif]] &lt;br /&gt;
| [[Image:Viewproperties.gif]] &lt;br /&gt;
| [[Image:Viewconditions.gif]] &lt;br /&gt;
| [[Image:Moveto.gif]] &lt;br /&gt;
| [[Image:Interview manager.gif]] &lt;br /&gt;
| [[Image:Mask.gif]] &lt;br /&gt;
| [[Image:Disable.gif]]&lt;br /&gt;
| [[Image:Lock information.png]]&lt;br /&gt;
| [[Image:Target.gif]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Image:testlink.gif]] &lt;br /&gt;
| [[Image:Reset layout.gif]] &lt;br /&gt;
| [[Image:Resetdelete.gif]] &lt;br /&gt;
| [[Image:Translate.gif]] &lt;br /&gt;
| [[Image:Start.gif]] &lt;br /&gt;
| [[Image:Pause.gif]]&lt;br /&gt;
| [[Image:Checksyntax.gif]]&lt;br /&gt;
| [[Image:Analyze.gif]]&lt;br /&gt;
| [[Image:Insertflash.gif]] &lt;br /&gt;
| [[Image:ExportPerformance_plain.gif]] &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Report icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Report.gif]] &lt;br /&gt;
| [[Image:Report template.gif]] &lt;br /&gt;
| [[Image:ViewReport.gif]] &lt;br /&gt;
| [[Image:Dashboard.gif]] &lt;br /&gt;
| [[Image:Spreadsheet.gif]] &lt;br /&gt;
| [[Image:Monitor.gif]] &lt;br /&gt;
| [[Image:Diagram.gif]] &lt;br /&gt;
| [[Image:GotoSite.gif]] &lt;br /&gt;
| [[Image:Customize.gif]] &lt;br /&gt;
| [[Image:Random.gif]] &lt;br /&gt;
| [[Image:Selection view.gif]] &lt;br /&gt;
| [[Image:Chartstyle.gif]] &lt;br /&gt;
| [[Image:Document chart.gif]] &lt;br /&gt;
| [[Image:Viewresult.gif]] &lt;br /&gt;
| [[Image:Copychart.gif]] &lt;br /&gt;
| [[Image:Sum.gif]] &lt;br /&gt;
| [[Image:Expression.gif]]&lt;br /&gt;
| [[Image:Checks.gif]]&lt;br /&gt;
| [[Image:Providerxml.gif]] &lt;br /&gt;
| [[Image:weekcross.gif]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Image:addtoleft.gif]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Communicator icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; class=&amp;quot;CGTable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Mail.gif]] &lt;br /&gt;
| [[Image:Bulkmail.gif]] &lt;br /&gt;
| [[Image:InformMessage.gif]] &lt;br /&gt;
| [[Image:SentMail.gif]] &lt;br /&gt;
| [[Image:SendAllMails.gif]] &lt;br /&gt;
| [[Image:SaveAndSentLater.gif]] &lt;br /&gt;
| [[Image:SavetoDraft.gif]] &lt;br /&gt;
| [[Image:Reply.gif]] &lt;br /&gt;
| [[Image:ReplyAll.gif]] &lt;br /&gt;
| [[Image:ReadMail.gif]] &lt;br /&gt;
| [[Image:UnreadMail.gif]] &lt;br /&gt;
| [[Image:MailAccount.gif]] &lt;br /&gt;
| [[Image:Sms.gif]] &lt;br /&gt;
| [[Image:Bulksms.gif]] &lt;br /&gt;
| [[Image:InvalidAddress_plain.gif]] &lt;br /&gt;
| [[Image:SendProperty.gif]] &lt;br /&gt;
| [[Image:Move.gif]] &lt;br /&gt;
| [[Image:StartQuestionnaire.gif]] &lt;br /&gt;
| [[Image:SendingMail.gif]]&lt;br /&gt;
| [[Image:Informer_plain.gif]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Highpriority.GIF]] &lt;br /&gt;
| [[Image:Priority.gif]] &lt;br /&gt;
| [[Image:Normalpriority.gif]] &lt;br /&gt;
| [[Image:Lowpriority.GIF]]&lt;br /&gt;
| [[Image:Rules.gif]] &lt;br /&gt;
| [[Image:Keys.png]] &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[CGScript icons]] ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:CGScriptPrompt.gif]] &lt;br /&gt;
| [[Image:CGScriptRun.gif]] &lt;br /&gt;
| [[Image:CGScriptRunAll.gif]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Coding job icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Script.gif]] &lt;br /&gt;
| [[Image:Exclude.gif]] &lt;br /&gt;
| [[Image:Include.gif]] &lt;br /&gt;
| [[Image:Reuse.gif]] &lt;br /&gt;
| [[Image:ClearAll.gif]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Data icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Datacache.gif]] &lt;br /&gt;
| [[Image:DeleteCache.gif]] &lt;br /&gt;
| [[Image:GenerateCache.gif]] &lt;br /&gt;
| [[Image:Rename.gif]] &lt;br /&gt;
| [[Image:Autofix.gif]] &lt;br /&gt;
| [[Image:Editaxis.gif]] &lt;br /&gt;
| [[Image:Weight.gif]] &lt;br /&gt;
| [[Image:Rebuild.png]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Expression icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Larger.gif]] &lt;br /&gt;
| [[Image:LargerEqual.gif]] &lt;br /&gt;
| [[Image:Smaller.gif]] &lt;br /&gt;
| [[Image:SmallerEqual.gif]] &lt;br /&gt;
| [[Image:Equal.gif]] &lt;br /&gt;
| [[Image:NotEqual.gif]] &lt;br /&gt;
| [[Image:And.gif]] &lt;br /&gt;
| [[Image:Or.gif]] &lt;br /&gt;
| [[Image:Inside.gif]] &lt;br /&gt;
| [[Image:Value.gif]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Task icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Approve.gif]] &lt;br /&gt;
| [[Image:Disapprove.gif]] &lt;br /&gt;
| [[Image:Finish.gif]] &lt;br /&gt;
| [[Image:Accept.gif]] &lt;br /&gt;
| [[Image:Reassign.gif]] &lt;br /&gt;
| [[Image:Merge.gif]] &lt;br /&gt;
| [[Image:SelectMerge.gif]] &lt;br /&gt;
| [[Image:generatetask.gif]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Webshop icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Transaction.gif]] &lt;br /&gt;
| [[Image:Addtransactionex.gif]] &lt;br /&gt;
| [[Image:Viewtransaction.gif]] &lt;br /&gt;
| [[Image:Updatebudget.gif]] &lt;br /&gt;
| [[Image:Pending.gif]] &lt;br /&gt;
| [[Image:Deliver.gif]] &lt;br /&gt;
| [[Image:Cashier approve.gif]] &lt;br /&gt;
| [[Image:Creditcard approve.gif]]&lt;br /&gt;
| [[Image:setAttribute_plain.gif]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Monitor icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Dashboard.gif]] &lt;br /&gt;
| [[Image:Document.gif]] &lt;br /&gt;
| [[Image:Document_attachment.gif]] &lt;br /&gt;
| [[Image:Earth2.gif]] &lt;br /&gt;
| [[Image:Folder.gif]] &lt;br /&gt;
| [[Image:DiagramCross.gif]] &lt;br /&gt;
| [[Image:DiagramStandard.gif‎]] &lt;br /&gt;
| [[Image:DiagramTracking.gif]] &lt;br /&gt;
| [[Image:DiagramCampaign.gif]] &lt;br /&gt;
| [[Image:DiagramComparison.gif]] &lt;br /&gt;
| [[Image:PowerPoint.gif]] &lt;br /&gt;
| [[Image:Presentation.gif]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[CATI &amp;amp; Asterisk icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Phone.gif]] &lt;br /&gt;
| [[Image:Speaker.gif]] &lt;br /&gt;
| [[Image:Check.gif]]&lt;br /&gt;
| [[Image:custom.gif]] &lt;br /&gt;
| [[Image:Play.png]] &lt;br /&gt;
| [[Image:Record.gif]] &lt;br /&gt;
| [[Image:Stop.gif]] &lt;br /&gt;
| [[Image:Overhear.gif]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:DisconnectPhone.gif]] &lt;br /&gt;
| [[Image:RingPhone.gif]] &lt;br /&gt;
| [[Image:SleepPhone.gif]] &lt;br /&gt;
| [[Image:TalkingPhone.gif]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[System announcement icons]]  ===&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;CGTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Error.png]] &lt;br /&gt;
| [[Image:Warning.png]] &lt;br /&gt;
| [[Image:Check.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Order of Icons  ==&lt;br /&gt;
&lt;br /&gt;
To give CatGlobe a uniform Look &amp;amp;amp; Feel, buttons must be in about the same location on all pages. While there are many different buttons the system, most buttons are in the same list of categories.&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
When we have limited space the icons with * may appear with no text labeling. &lt;br /&gt;
&lt;br /&gt;
=== Some samples  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:OrderofIcon.gif]] &lt;br /&gt;
&lt;br /&gt;
=== Order of icons  ===&lt;br /&gt;
&lt;br /&gt;
#Create * &lt;br /&gt;
#Add * &lt;br /&gt;
#Save * &amp;lt;br&amp;gt;&#039;&#039;--------(Separator)&#039;&#039; &lt;br /&gt;
#Save and next &lt;br /&gt;
#Save and new &lt;br /&gt;
#Save and close &amp;lt;br&amp;gt;&#039;&#039;--------(Separator)&#039;&#039; &lt;br /&gt;
#Edit * &lt;br /&gt;
#Open * &lt;br /&gt;
#Open Template &lt;br /&gt;
#Copy * &amp;lt;br&amp;gt;&#039;&#039;--------(Separator)&#039;&#039; &lt;br /&gt;
#Search * &lt;br /&gt;
#Refresh *&amp;lt;br&amp;gt;&#039;&#039;--------(Separator)&#039;&#039; &lt;br /&gt;
#Backward * &lt;br /&gt;
#Forward * &amp;lt;br&amp;gt;&#039;&#039;--------(Separator)&#039;&#039; &lt;br /&gt;
#Print resource information *&lt;br /&gt;
#Send resource information * &amp;lt;br&amp;gt;&#039;&#039;--------(Separator)&#039;&#039; &lt;br /&gt;
#&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: rgb(255, 102, 0);&amp;quot;&amp;gt;Other specified Icons&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039;--------(Separator)&#039;&#039; &lt;br /&gt;
#Delete * &lt;br /&gt;
#Remove * &lt;br /&gt;
#Close *&amp;lt;br&amp;gt;&#039;&#039;--------(Separator)&#039;&#039; &lt;br /&gt;
#Pager control &lt;br /&gt;
#No of Records field&lt;br /&gt;
&lt;br /&gt;
[[Category:LnF_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Coding_guideline_-_CatGlobe&amp;diff=24774</id>
		<title>Coding guideline - CatGlobe</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Coding_guideline_-_CatGlobe&amp;diff=24774"/>
		<updated>2013-10-18T03:56:33Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== Introduction  ==&lt;br /&gt;
&lt;br /&gt;
This guideline contains CatGlobe-specific coding rules. &lt;br /&gt;
&lt;br /&gt;
== Exception  ==&lt;br /&gt;
&lt;br /&gt;
=== Exception handling  ===&lt;br /&gt;
&lt;br /&gt;
*Only catch exception if you can do some thing with it. &lt;br /&gt;
*All re-thrown exception must include the original exception in its inner exception. &lt;br /&gt;
*DO: always catch specific exception type. You are allowed to catch generic exception and re-throw a specific exception; for example in CGScript all exceptions are caught and a RuntimeException is re-thrown afterward. &lt;br /&gt;
*DO NOT: empty and undocumented catches; using unspecific catches, unless they are documented well in the design document and are approved by the PMs.&lt;br /&gt;
&lt;br /&gt;
=== Create a new custom of exception  ===&lt;br /&gt;
&lt;br /&gt;
*Naming rule: the new exception must be suffixed with “Exception”. &lt;br /&gt;
*All custom exceptions must inherit from another exception class. &lt;br /&gt;
*The exception should be serializable in order to use in CatTask service. Refer to [[Serializable exceptions]] for more details. Notice: when the new CatTask service is done, this may be obsolete. &lt;br /&gt;
*Namespace rule:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;If the being created exception is used in multiple places, it must be placed in the CatGlobe.Framework.Exceptions namespace. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Otherwise, if it is used for a specific class only, it can be placed in the namespace where it is used. &lt;br /&gt;
&lt;br /&gt;
== Working with threads  ==&lt;br /&gt;
&lt;br /&gt;
*Usages of threads must be specified in the Technical design and approved by PMs. &lt;br /&gt;
*Use CatGlobe.Framework.Security.AsyncHelper class to start a thread with auto-impersonate, access factory and webconfig manager.&lt;br /&gt;
&lt;br /&gt;
== Web pages – web controls  ==&lt;br /&gt;
&lt;br /&gt;
=== Code behind (ASPX and ASCX)  ===&lt;br /&gt;
&lt;br /&gt;
*Code behind must be documented with request parameters, usage, purpose. &lt;br /&gt;
*Use Register…(JavascriptConstant…) to include javascript files in the code behind. &lt;br /&gt;
*Web page must inherit from the PageBase class, control must inherit from the ControlBase class and Web Service must inherit from the WebServiceBase class. &lt;br /&gt;
*DO NOT override the OnError event, unless it is approved in the technical design.&lt;br /&gt;
&lt;br /&gt;
=== ASPX file  ===&lt;br /&gt;
&lt;br /&gt;
*Replace the auto-generated DOCTYPE by this one:&amp;amp;nbsp;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.0 Transitional//EN&amp;quot; &amp;amp;gt; &lt;br /&gt;
*A page must have a title using text resource. &lt;br /&gt;
*All the validation warnings which the Visual Studio shows must be fixed. &lt;br /&gt;
*Adding references to user controls and using of tagPrefixes: must following this guideline [[Tag prefixes for user controls and web controls]] &lt;br /&gt;
*You are allowed to reference to javascript files in the aspx files directly. However, you must use the JavascriptConstant to reference to them. &lt;br /&gt;
*If a page or a control contains more than 3 methods or more than 20 lines, move it to a separate js file.&lt;br /&gt;
&lt;br /&gt;
=== ASCX file  ===&lt;br /&gt;
&lt;br /&gt;
*DO NOT reference to javascript files in the ascx files.&lt;br /&gt;
&lt;br /&gt;
=== Text resources  ===&lt;br /&gt;
&lt;br /&gt;
*When you need to register a text resource to the client side, use the PageBase.CGClientScript.RegisterTextResource method. The method will encode registered text resources for you. &lt;br /&gt;
*Setting for text resource files of web pages:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Need to be set to the [filename].aspx.resx file only. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;-&amp;amp;nbsp;Custom tool namespace: x (yes, only the letter &#039;x&#039;). &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Build action: None &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;-&amp;amp;nbsp;Custom tool: ResXFileCodeGeneratorEx &lt;br /&gt;
&lt;br /&gt;
*Setting for text resource files of an enumeration file:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Custom tool namespace: aenum &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; - Build action: Embedded Resource &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; - Custom tool: ResXFileCodeGeneratorEx &lt;br /&gt;
&lt;br /&gt;
=== Events handling  ===&lt;br /&gt;
&lt;br /&gt;
*When you override an event, always call to base class method. &lt;br /&gt;
*Only handle an event when you have something to do with it. On this example, the OnInit method should be removed because we have nothing to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
protected override void OnInit(EventArgs e)&lt;br /&gt;
{ &lt;br /&gt;
 base.OnInit(e);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Request  ===&lt;br /&gt;
&lt;br /&gt;
*All the arguments which can be passed to the url must be documented. &lt;br /&gt;
*Each request parameter must have it own getter property. Handling of the request parameters must always be inside the getter properties. &lt;br /&gt;
*All request parameter getters must be put in a region called “REQUEST PARAMETERS”.&lt;br /&gt;
&lt;br /&gt;
=== Session  ===&lt;br /&gt;
&lt;br /&gt;
*Use SessionManager to work with Session. &lt;br /&gt;
*Objects which are put into the Session must be serializable. &lt;br /&gt;
*Examples about good and bad usages of Session, in the share-data-between-pages context:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Good if the data is complicated and cannot be render to the clientside or pass via url easily. A good example is the search criterion of the search page. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;-&amp;amp;nbsp;Good if the data is incompleted, so it is not ready to be saved to the database yet, for example the data which is collected through a wizard: we collect some pieces of information in step 1, put them into Session and navigate to the step 2, and so on... &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Good if the data takes too much resources (IO, CPU, time) to retrieved. For example a fully-initialized Questionnaire, means all of its questions, question properties, sub questions, answer options are initialized. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Bad if the data in Session can be changed by multiple pages/forms by multiple ways. For example: the page A shows some information about a report, which is put in the session. The user opens the Report compact dialog in another tab. When the user saves the report in the CRD, it is the database is updated, not the report object in the Session. Now the user backs to the page A and modifies the report. Obviously he will get a concurrency problem. &lt;br /&gt;
&lt;br /&gt;
=== Javascript  ===&lt;br /&gt;
&lt;br /&gt;
*Do not use browser-specific script. All the javascript must work in both IE and FireFox. &lt;br /&gt;
*Javascript should be written in OOP style using AJAX .NET. One class should be in one file. &lt;br /&gt;
*Functions must be documented about their usages and their parameters. Types of parameters must also be specified. &lt;br /&gt;
*In order to utilize the intellisense feature of VS2008:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;-&amp;amp;nbsp;Put summary inside function: &lt;br /&gt;
&lt;br /&gt;
[[Image:Javascriptsummary.jpg]] &lt;br /&gt;
&lt;br /&gt;
*To get intellisense work in a javascript file, you have to add a reference to the source JavaScript file. There are two situations need to be considered here:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;If the source JavaScript file is a embedded resource, use the declaration below: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; /// &amp;amp;lt;reference name=&amp;quot;registered name of that embeded JavaScript file&amp;quot; /&amp;amp;gt; &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;-&amp;amp;nbsp;If the source JavaScript file is an included file, use the declaration below: &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; /// &amp;amp;lt;reference path=&amp;quot;path file name of that JavaScript file&amp;quot;/&amp;amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Javascriptreference.jpg]] &lt;br /&gt;
&lt;br /&gt;
*To get intellisense work in a ASPX file:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;If your page is implementing AJAX, reference to the source JavaScript file in ScriptManager control: &amp;amp;lt;source lang=&amp;quot;csharp&amp;quot; line=&amp;quot;1&amp;quot;&amp;amp;gt; &amp;amp;lt;asp:ScriptManager runat=&amp;quot;server&amp;quot; id=&amp;quot;scriptManager&amp;quot;&amp;amp;gt; &amp;amp;lt;Scripts&amp;amp;gt; &amp;amp;lt;asp:ScriptReference path=&amp;quot;virtual path file name of the JavaScript file&amp;quot; /&amp;amp;gt; &amp;amp;lt;/Scripts&amp;amp;gt; &amp;amp;lt;/asp:ScriptManager&amp;amp;gt; &amp;amp;lt;/source&amp;amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Otherwise, reference to the source JavaScript file in a script element declaration: &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;lt;script src=&amp;quot;virtual path file name of the JavaScript file&amp;quot; type=&amp;quot;text/javascript&amp;quot; &amp;amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Data access layer  ==&lt;br /&gt;
&lt;br /&gt;
=== AccessFactory  ===&lt;br /&gt;
&lt;br /&gt;
*Special uses of AF must be approved in the TD. They can be:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;- Where you need to create an AF by yourself. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; - Where you need to call Commit or Abort. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;- Where you need to call CloseOverwritenConnectionWithNoGlobalTransaction and OverwriteConnectionToNoGlobalTransaction.&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
=== Access class  ===&lt;br /&gt;
&lt;br /&gt;
*Every access class of a domain class needs two callback methods and two delegates which are used when creating and saving objects. &lt;br /&gt;
*The callback method which is used when creating object is named Create. In this method, data is read from the IDataReader to build an object. Signature of the Create method is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
static private T Create(ref CreateOrd co, IDataReader reader)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where T is a domain class, for example User, Attachment or EmailAddress. &lt;br /&gt;
&lt;br /&gt;
*The callback method which is used when saving object is named Save. In this method, the primary key of the being saved object is read from the IDataReader and update to the object. If the object is a Resource, version is read and update too. Signature of the Save method is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
static private void Save(T emailerror, IDataReader reader)&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Create two delegates for the two methods above. These delegates are passed to the AccessBase.Execute[Action] methods:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
static readonly CreateDelegateGen&amp;lt;T&amp;gt; create = Create; &lt;br /&gt;
&lt;br /&gt;
static readonly SaveDelegateGen&amp;lt;T&amp;gt; save = Save;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Building query  ===&lt;br /&gt;
&lt;br /&gt;
When building a query: &lt;br /&gt;
&lt;br /&gt;
*Only make your own sql builder function if you can’t find an appropriate one in the GenericSqlBuilder class. &lt;br /&gt;
*All the methods in the MySqlBuilder layer must begin with “Build” and end with “Sql”. &lt;br /&gt;
*Use StringBuilder to build your queries. &lt;br /&gt;
*Always use provider constant to get table names and column names. &lt;br /&gt;
*MySqlBuilder methods should take the same parameters as calling method from the Access layer, except when multiple methods from the Access layer call the same builder. &lt;br /&gt;
*Make your input parameters as strict as possible. For example, if the input is a provider table of a resource view, its type shouldn’t be ProviderTable, but ProviderResourceViewTable. &lt;br /&gt;
*Always use GetLiteral functions to convert a value to a string which can be appended to the query. Usage of GetLiteral is not required when data type of the value is number. &lt;br /&gt;
*Append every condition of the where clause in a separate line. Operants of an OR operator should be written in one line. &lt;br /&gt;
*Example:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Wrong:&amp;lt;br&amp;gt;&#039;&#039;&#039;&#039;&#039;&amp;lt;source lang=&amp;quot;csharp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
StringBuilder sqlBuilder = new StringBuilder();&lt;br /&gt;
sqlBuilder.Append(&amp;quot;SELECT ID&amp;quot;);&lt;br /&gt;
sqlBuilder.Append(&amp;quot; FROM &amp;quot;);&lt;br /&gt;
sqlBuilder.Append(&amp;quot; USER_RESOURCE &amp;quot;);&lt;br /&gt;
sqlBuilder.Append(&amp;quot; WHERE &amp;quot;);&lt;br /&gt;
sqlBuilder.Append(&amp;quot; NAME &amp;quot;);&lt;br /&gt;
sqlBuilder.Append(&amp;quot; = &amp;quot;);&lt;br /&gt;
sqlBuilder.Append(userName);&lt;br /&gt;
sqlBuilder.Append(&amp;quot; AND &amp;quot;);&lt;br /&gt;
sqlBuilder.Append(&amp;quot; (Access_Expiration &amp;lt;= &amp;quot;);&lt;br /&gt;
sqlBuilder.Append(CGDateTime.Now.ToString());&lt;br /&gt;
sqlBuilder.Append(&amp;quot; OR &amp;quot;);&lt;br /&gt;
sqlBuilder.Append(&amp;quot; Access_Expiration is NULL) &amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Correct:&amp;lt;br&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
StringBuilder sqlBuilder = new StringBuilder();&lt;br /&gt;
sqlBuilder.AppendFormat(&amp;quot;SELECT {0} &amp;quot;, PC.UserResource.Id);&lt;br /&gt;
sqlBuilder.AppendFormat(&amp;quot;FROM {0} &amp;quot;, PC.UserResource.TableName);&lt;br /&gt;
sqlBuilder.Append(&amp;quot;WHERE &amp;quot;);&lt;br /&gt;
sqlBuilder.AppendFormat(&amp;quot;{0} = {1} &amp;quot;, PC.UserResource.ShortName.Name, GetLiteral(userName));&lt;br /&gt;
sqlBuilder.AppendFormat(&amp;quot;AND ({0} &amp;lt;= {1} OR {0} is NULL)&amp;quot;, PC.UserResource.AccessExpiration.Name, GetLiteral(CGDateTime.Now));&lt;br /&gt;
&amp;lt;/source&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Performance  ==&lt;br /&gt;
&lt;br /&gt;
*If using lazy evaluated property on a collection of objects, then the properties should be initialized before usage to prevent the lazy evaluation. Naming for that function is InitAll[PropertyName]. &lt;br /&gt;
*The InitAll[PropertyName] functions should be implemented using the CatGlobe.Domain.Common.GenericInitAllHelper class. &lt;br /&gt;
*When you need to check for access of a user to many resources, do it once directly in the query. &lt;br /&gt;
*Similarly for navigation accesses checking: there is a method to check for many navigation accesses in the PageBase class. &lt;br /&gt;
*Use string.Format when you want to concatenate more than 2 string objects in one line. &lt;br /&gt;
*Use StringBuilder when you want to concatenate string objects in many lines, or inside a loop. &lt;br /&gt;
*Use generic types like Dictionary&amp;amp;lt;&amp;amp;gt; and List&amp;amp;lt;&amp;amp;gt; instead of HashTable, ArrayList. ArrayList can be used for return type of Server methods. &lt;br /&gt;
*When you have a list of items, you may want to use Dictionary or List to store them. The rule is:when you want to store values to look up quickly, use the Dictionary class. Otherwise, use List.&lt;br /&gt;
&lt;br /&gt;
== Auto-generated files  ==&lt;br /&gt;
&lt;br /&gt;
There are a few auto-generated files in Catglobe:&lt;br /&gt;
*ConfigurationConstants.&lt;br /&gt;
*ProviderConstants.&lt;br /&gt;
*Text resource classes.&lt;br /&gt;
*Resx files.&lt;br /&gt;
*Designer files.&lt;br /&gt;
*SessionManager.&lt;br /&gt;
*JavaScriptFileConstants&lt;br /&gt;
*LINQ to XSD generated files.&lt;br /&gt;
*WSDL generated files.&lt;br /&gt;
*WCF generated files.&lt;br /&gt;
Rules:&lt;br /&gt;
*DO NOT: modify it manually.&lt;br /&gt;
*DO: modify the source file and then generate the source code file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Webconfig  ==&lt;br /&gt;
*A new key must be approved by CORE.&lt;br /&gt;
*You need to add a validation method for the new key in the WebconfigValidation class.&lt;br /&gt;
*DO NOT: read the key directly from webconfig.&lt;br /&gt;
*DO: make a new property in the WebconfigManager class to read it.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Data validation  ==&lt;br /&gt;
*Specify the maximum length of character input fields.&lt;br /&gt;
*Specify the minimum and the maximum value of numeric input fields.&lt;br /&gt;
*Validation, if possible, should be done first on the client side. Data then must always be validated again on the server side.&lt;br /&gt;
*Try to use control which supports data-restriction. For example, the WebNumeric control allows us to specify the minimum and maximum values, allows numbers only.&lt;br /&gt;
*Checking for database constraints, for example if a resource name already exists, should be done before data is actually inserted or updated to the database.&lt;br /&gt;
*Validations may need to be done:&lt;br /&gt;
*If the input value is in the valid range.&lt;br /&gt;
*If length the input value is the valid range.&lt;br /&gt;
*If it contains invalid character.&lt;br /&gt;
*If it meets some specific constraints, for example an email address field must match the email naming rule.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resource access – navigation access  ==&lt;br /&gt;
*Any page which requires navigation access must be check for navigation access in itself.&lt;br /&gt;
*Any page which shows information of a resource to the user must check for resource access.&lt;br /&gt;
*Given that in page A we have a button called Open which is used to open the page B, which shows information about a User. *Typically, we need to check:&lt;br /&gt;
**In the page A:&lt;br /&gt;
***Check for navigation access to show/hide or to enable/disable the Open button.&lt;br /&gt;
***In some pages you may need to check for resource access to enable/disable the Open button.&lt;br /&gt;
**In the page B: You need to check for both navigation access and resource access again. The reason for this check is that the user may copy the url to open a page and change some of its parameters to open another resource directly to bypass the check in the source page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server method  ==&lt;br /&gt;
*DO NOT call server method inside a FOR loop. There is almost always a way to collect all the needed data and call the server method just one time.&lt;br /&gt;
*Important rules&lt;br /&gt;
*Always put the call to a synchronous server method in a try-catch block on the client side. Recall to the empty try catch rule, you may need to show an error message to the user.&lt;br /&gt;
*For asynchronous server methods, refer to [[ServerMethods&#039; exception handling]] for more details.&lt;br /&gt;
*Exception handling in a server method should follow the section about exception above.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Localization  ==&lt;br /&gt;
&lt;br /&gt;
*Data which is shown to the user must be in the culture of the logged in user. In the case of date time, it is also required that the display value must be in the time zone of the logged in user. All exceptions must be specified in the feature design.&lt;br /&gt;
*Use CGDateTime instead of DateTime in the Business logic layer and Domain layer. Usages of the .NET DateTime struct is restricted in GUI only, unless they are approved in TD.&lt;br /&gt;
*If a GUI needs a control to work with date time, use the CGDateTimeControl. However, if the field is an editable-date-only, use the Infragistic.WebDateChooser control.&lt;br /&gt;
*The Turkish culture has a lot of differences from other cultures. Refer to this link for more information: http://www.moserware.com/2008/02/does-your-code-pass-turkey-test.html&lt;br /&gt;
*String representation of data which is saved to the database must be in Invariant culture.&lt;br /&gt;
*String representation of data which is passed to the domain layer should also be in Invariant culture.&lt;br /&gt;
*Date time which is stored in the database must be in UTC. If you need to store a string of date time value in the database, its format must be in Invariant Culture and its time zone must be UTC. This includes all data in XMLs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Commit rule  ==&lt;br /&gt;
For project:&lt;br /&gt;
*Commit all the files in one commit is recommended. Commit log must contains the project id.&lt;br /&gt;
*When committing bug fixes for a project, both task id and project id are required. In addition, there must be comment about what the bug is and what has been done to fix it.&lt;br /&gt;
For bug fix:&lt;br /&gt;
*Task id is required.&lt;br /&gt;
*Commit fix for one bug a time (sometimes one fix may kill many bugs).&lt;br /&gt;
*Depend on the complexity and importance of the bug, provide proper comments.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General  ==&lt;br /&gt;
&lt;br /&gt;
=== Code changing&amp;lt;br&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
*Whenever you modify a domain method, you must use the find all references feature to find all the places which the method is used and investigate if your change also affects them.&lt;br /&gt;
*If you change code of another group, please inform them before you commit.&lt;br /&gt;
*If you modify a public method which doesn’t have summary, add summary for it.&lt;br /&gt;
*If you reformat/re-indent a class, commit it separately without any code change.&lt;br /&gt;
&lt;br /&gt;
=== Utilizing C# 3.0 syntax  ===&lt;br /&gt;
&lt;br /&gt;
*Fast declaration of get/set for simple property. Please notice that this syntax cannot be used if you need to initialize a field inline, for example initialize a CGDateTime field to MinValue. &lt;br /&gt;
*Use lambda syntax instead of anonymous method.&amp;amp;lt;span id=&amp;quot;fck_dom_range_temp_1229918839047_580&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
ContactFolder missingFolder = contactFolders.Find(cf =&amp;amp;gt; cf.ContactFolderType == contactFolderType);&amp;lt;br&amp;gt;instead of &amp;lt;br&amp;gt;ContactFolder missingFolder = contactFolders.Find(delegate(ContactFolder cf) { return cf.ContactFolderType == contactFolderType; }); &lt;br /&gt;
&lt;br /&gt;
*Use object initializers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//Object initializer&lt;br /&gt;
User user = new User {Name = &amp;quot;CatGlobe&amp;quot;, Password = &amp;quot;cg&amp;quot;}; &lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
// List initializer&lt;br /&gt;
List&amp;lt;string&amp;gt; people = new List&amp;lt;string&amp;gt;()&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;Granville&amp;quot;,&lt;br /&gt;
&amp;quot;John&amp;quot;,&lt;br /&gt;
&amp;quot;Rachel&amp;quot;,&lt;br /&gt;
&amp;quot;Betty&amp;quot;,&lt;br /&gt;
&amp;quot;Chandler&amp;quot;,&lt;br /&gt;
&amp;quot;Ross&amp;quot;,&lt;br /&gt;
&amp;quot;Monica&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*When you need to make a JavaScript version of a server side object encoded in JSON, use the CatGlobe.Framework.Serialization.CGJavaScriptSerializer class. Also be noticed that the anonymous type feature of C# 3.0 is a good choice to make an object to serialize to the clientside. Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
var clientObject = new { Name = &amp;quot;CatGlobe&amp;quot;, Value = &amp;quot;Hi there!&amp;quot;, Accesible = false };&lt;br /&gt;
string json = CGJavaScriptSerializer.Serialize(clientObject);&lt;br /&gt;
Page.ClientScript.RegisterStartupScript(typeof(_Default), &amp;quot;Startup&amp;quot;, string.Format(&amp;quot;var clientObject = {0};&amp;quot;, json), true); &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value of json is “{&amp;quot;Name&amp;quot;:&amp;quot;CatGlobe&amp;quot;,&amp;quot;Value&amp;quot;:&amp;quot;Hi there!&amp;quot;,&amp;quot;Accesible&amp;quot;:false}”&lt;br /&gt;
&lt;br /&gt;
=== Code reusing ===&lt;br /&gt;
&lt;br /&gt;
*Look for or ask for the needed APIs first. If it is not available, contact the PM to include it.&lt;br /&gt;
*If need to use some piece of code twice or more, then make a function to do it. Even if it is just 2 lines!&lt;br /&gt;
*Whenever you think that what you make may be used by other developer, or it can somehow be promoted to a common library, please contact with RnD to find a good place to put it.&lt;br /&gt;
&lt;br /&gt;
=== Placement of code ===&lt;br /&gt;
&lt;br /&gt;
*Business logic does NOT belong in GUI.&lt;br /&gt;
*What are business logics?&amp;amp;nbsp;Rule of Thumb: any code which doesn’t directly manipulate a GUI component is BL.&lt;br /&gt;
*BL code which is used to make decision should be put in the Framework classes, not Domain classes.&lt;br /&gt;
*A domain class:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Is an in-code instance of a database table.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Read data from and write data to the corresponding table.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Validate data before which may be saved to database.&lt;br /&gt;
&lt;br /&gt;
*A framework class:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; - Called module class in technical design.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; - Contains business logic code of a web page, calls domain classes to manipulate database&#039;s data.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; - Contains helper APIs which are used widely.&lt;br /&gt;
&lt;br /&gt;
*Helper classes that are used only inside some other class should not be defined it its own file and namespace. Instead it should be an inner class.&lt;br /&gt;
*We alreay had a new project called CatGlobe.Common which contains all the common stuffs which are used across the solution.&lt;br /&gt;
&lt;br /&gt;
== Xml  ==&lt;br /&gt;
&lt;br /&gt;
*It is required that every xml document must have an XSD. The XSD file is put in the same folder with the class which uses it. Set the Build action property to Embedded Resource. &lt;br /&gt;
*Look for an appropriate existing AssemblyIncludedFiles class or create one new iIn the same folder. In this file:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Make a string constant for the path to the xsd file. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Make a GetStream method like the example below.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public static class AssemblyIncludedFiles&lt;br /&gt;
{&lt;br /&gt;
    public const string RULES_SCHEMA_PATH = &amp;quot;CatGlobe.Domain.PhoneNumbers.Rules.rules.xsd&amp;quot;;&lt;br /&gt;
    static public System.IO.Stream GetStream(string filePath)&lt;br /&gt;
    {&lt;br /&gt;
        return typeof(AssemblyIncludedFiles).Assembly.GetManifestResourceStream(filePath);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Working with XSD  ===&lt;br /&gt;
&lt;br /&gt;
*Naming of the elements becomes naming of classes and properties, so you might want to make your xsd naming same as C# naming. &lt;br /&gt;
*For the targetNamespace attribute: our suggestion is that you can use that of the XSD file, which means http://CatGlobe/&amp;amp;lt;module&amp;amp;gt;/&amp;amp;lt;class&amp;amp;gt;. For example, if the targetNameSpace is [http://catglobe/Domain/Report/DashBoard/TimeSet http://CatGlobe/Domain/Report/DashBoard/TimeSet], namespace then will become CatGlobe.Domain.Report.DashBoard.TimeSet &lt;br /&gt;
*After the XSD is ready, generate a C# class for it by executing this command:&lt;br /&gt;
&lt;br /&gt;
C:\Program Files\LINQ to XSD Preview\Bin\LinqToXsd.exe &amp;amp;lt;path to your xsd&amp;amp;gt; /fileName:&amp;amp;lt;path to where you want your generated cs file&amp;amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Read the manual on how to use the generated class. It is located in C:\Program Files\LINQ to XSD Preview\Docs&lt;br /&gt;
&lt;br /&gt;
== Utility classes  ==&lt;br /&gt;
&lt;br /&gt;
*Classes in the namespace CatGlobe.Framework.Text have many APIs which are used to work with strings:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Encode strings to use in javascript, in HTML.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Validate email addresses.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Convert a generic list to a string.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Escapse special characters.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Convert HTML to plain text.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Generate some kinds of strings.&lt;br /&gt;
&lt;br /&gt;
*CatGlobe.Framework.Security.SecurityManager: provides various APIs to check for resource access, navigation access as well as grant/ungrant resource access, navigation access.&lt;br /&gt;
*CatGlobe.Framework.Network.Dns: have various classes to work with DNS. One of the most useful feature is that it can be used to check for the existence of both ARecord and MXRecord.&lt;br /&gt;
*CatGlobe.Framework.Images.ImageUtilities: provides APIs to work with images:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Create thumbnails.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Get the link to an Image resource.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -&amp;amp;nbsp;Get mime type.&lt;br /&gt;
&lt;br /&gt;
*CatGlobe.Framework.DateTimer.DateTimeHelper and CatGlobe.Framework.DateTimer.CGDateTimeConverter: provide various APIs to work with date times. You also can find standard format strings for date time there.&lt;br /&gt;
*CatGlobe.Framework.DataStructure.SortingHelper: a class which is used to sort unsaved data of a grid control on the server side.&lt;br /&gt;
*CatGlobe.Framework.Communication.Mail: provides various APIs to send mails out.&lt;br /&gt;
*System.Collections.SerializableDictionary: a dictionary type which is xml-serializable.&lt;br /&gt;
&lt;br /&gt;
== How to create a CGScript library or function  ==&lt;br /&gt;
&lt;br /&gt;
*CGScript functions are in the CatGlobe.Framework.Runtime namespace. You need to specify which library the function belongs to.&lt;br /&gt;
*How to register new functions to the library:&lt;br /&gt;
*Register new function to the symbol table: inside Register() method of this library class. Call the symbolTable.AddFunction method with the following syntax:&lt;br /&gt;
&lt;br /&gt;
symbolTable.AddFunction(&amp;quot;functionName&amp;quot;, new FunctionIdentifier(&amp;quot;functionName&amp;quot;, new FunctionEventHandler(this.FunctionName), ConstantType.&amp;amp;lt;return_data_type&amp;amp;gt;));&lt;br /&gt;
&lt;br /&gt;
where&amp;lt;br&amp;gt;FunctionName: name of new functions: such as isRequiredConstant, setBooleanConstant,...&amp;lt;br&amp;gt;this.FunctionName: a method for handling this new CGS function&amp;lt;br&amp;gt;ConstantType.&amp;amp;lt;return_data_type&amp;amp;gt;: return type of a new function&lt;br /&gt;
&lt;br /&gt;
*Put all register commands on the region “register constant functions”. Create a method for handling the CGS function logic. It must have the signature of :&lt;br /&gt;
&lt;br /&gt;
private Constant FunctionName(FunctionIdentifier function)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;In this method, we must follow the scenario:&lt;br /&gt;
&lt;br /&gt;
*Validate the number of arguments, throw runtime exception if it&#039;s wrong&lt;br /&gt;
*Validate argument (type and its existence if needed), throw runtime exception if it&#039;s wrong&lt;br /&gt;
*Execute its main logic&lt;br /&gt;
*Return result as its &amp;amp;lt;return_data_type&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=CGScript_-_Coding_guideline&amp;diff=24766</id>
		<title>CGScript - Coding guideline</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=CGScript_-_Coding_guideline&amp;diff=24766"/>
		<updated>2013-10-18T03:29:15Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
= Objects  =&lt;br /&gt;
&lt;br /&gt;
Objects in cgscript can be created by doing following this guideline.&lt;br /&gt;
&lt;br /&gt;
First an object must be created. The normal name for this is xxxCGO where xxx is the name of the object in cgscript.&lt;br /&gt;
&lt;br /&gt;
This object must inherit from &amp;lt;code&amp;gt;CgScriptObject&amp;lt;/code&amp;gt; and it must have a &amp;lt;code&amp;gt;CgAttribute&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example, here is the absolute minimal class:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
[Cg(OBJECT_TYPE_NAME, &amp;quot;write the documentation for the class here&amp;quot;)]&lt;br /&gt;
internal class MyObjectCGO : CgScriptObject&lt;br /&gt;
{&lt;br /&gt;
   private const string OBJECT_TYPE_NAME = &amp;quot;MyObject&amp;quot;;&lt;br /&gt;
   public override string ObjectTypeName&lt;br /&gt;
   {&lt;br /&gt;
      get { return OBJECT_TYPE_NAME; }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The class must be internal or public, and non-abstract, and must not play with generics.&lt;br /&gt;
The exception is that it may inherit from a generic baseclass (which then inherits from CgScriptObject), or implement a generic interface.&lt;br /&gt;
&lt;br /&gt;
=== Inheritance ===&lt;br /&gt;
&lt;br /&gt;
A CgScriptObject may utilize inheritance as a normal .NET object. CgScript will not be aware of this, it just sees all inherited methods, properties, etc. as belonging to the class.&lt;br /&gt;
&lt;br /&gt;
== Object functions ==&lt;br /&gt;
&lt;br /&gt;
Functions are exposed as cgscript functions by marking them with the CgAttribute and also marking all the parameters with the CgAttribute (see [[#Parameters]]).&lt;br /&gt;
&lt;br /&gt;
The function must be internal or public, and non-abstract, and must not play with generics.&lt;br /&gt;
&lt;br /&gt;
Overloads are supported, so the same name can be defined multiple times with different parameters. The rules for this is similar to C#s overload resolution (but not identical). If in doubt, don&#039;t use fancy parameters.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
[Cg(&amp;quot;ContainsKey&amp;quot;, &amp;quot;Determines whether the dictionary contains the specified key with type is a string.&amp;quot;)]&lt;br /&gt;
public bool ContainsKey([Cg(&amp;quot;key&amp;quot;, &amp;quot;Check with specific key&amp;quot;)]string key)&lt;br /&gt;
{&lt;br /&gt;
   return _dict.ContainsKey(key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A function may be static, but from inside cgscript it will be exposed as a member function.&lt;br /&gt;
&lt;br /&gt;
== Object properties ==&lt;br /&gt;
&lt;br /&gt;
Properties have almost the same requirements as methods.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
[Cg(&amp;quot;Count&amp;quot;, &amp;quot;Gets the number of key/value pairs contained in the dictionary.&amp;quot;)]&lt;br /&gt;
public int Count&lt;br /&gt;
{&lt;br /&gt;
   get { return _dict.Count; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The getter and setter may have different visibility, e.g. the getter may be public and the setter may be private. In that case, only the getter is accessible from CgScript.&lt;br /&gt;
&lt;br /&gt;
However, note that this alternative marking of the getter/setter may not do what you expect:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
public int Count&lt;br /&gt;
{&lt;br /&gt;
   [Cg(&amp;quot;Count&amp;quot;, &amp;quot;Gets the number of key/value pairs contained in the dictionary.&amp;quot;)]&lt;br /&gt;
   get { return _dict.Count; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will register the getter as a function (ie. from cgscript you would have to call o.Count() instead of o.Count)&lt;br /&gt;
&lt;br /&gt;
== Object indexer ==&lt;br /&gt;
&lt;br /&gt;
Indexers are a special construction in C# (and VB). They look a little bit like both Properties and Methods. So the syntax for registering them in CgScript is a little special.&lt;br /&gt;
&lt;br /&gt;
The indexer must be marked with a CgAttribute, and the getter/setter must be marked with a CgAttribute also, the name must be &amp;lt;code&amp;gt;get_Item/set_Item&amp;lt;/code&amp;gt; respectively in order to use it as an indexer inside CgScript. Furthermore the setter must use the very special &amp;quot;param:&amp;quot; prefix on the CgAttribute to document the value.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
public IConstant this[[Cg(&amp;quot;key&amp;quot;, &amp;quot;The key used to lookup the value.&amp;quot;)] string key]&lt;br /&gt;
{&lt;br /&gt;
   [Cg(&amp;quot;get_Item&amp;quot;, &amp;quot;Get an item based on a key.&amp;quot;)]&lt;br /&gt;
   get { return _dict[key]; }&lt;br /&gt;
   [Cg(&amp;quot;set_Item&amp;quot;, &amp;quot;Set an item based on a key and a value.&amp;quot;)]&lt;br /&gt;
   [param:Cg(&amp;quot;value&amp;quot;, &amp;quot;The value to set.&amp;quot;)]&lt;br /&gt;
   set { _dict[key] = value; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
CgScript objects support a number of types, that are automatically converted when calling the function and returning from the function:&lt;br /&gt;
&lt;br /&gt;
* Void (For return values only) - Constant.Empty is returned&lt;br /&gt;
* string - Automatically converted to and from a StringConstant&lt;br /&gt;
* double - Automatically converted to and from a NumberConstant&lt;br /&gt;
* int - Automatically converted to and from a NumberConstant&lt;br /&gt;
* bool - Automatically converted to and from a BooleanConstant&lt;br /&gt;
* CGDateTime - Automatically converted to and from a DateTimeConstant&lt;br /&gt;
* Any type that implement IConstant - No conversion is done&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
[Cg(&amp;quot;Add&amp;quot;, &amp;quot;Adds the specified key and value to the dictionary with type of key is a string.&amp;quot;)]&lt;br /&gt;
public bool Add([Cg(&amp;quot;key&amp;quot;, &amp;quot;Add with specific key&amp;quot;)] string key,&lt;br /&gt;
                [Cg(&amp;quot;value&amp;quot;, &amp;quot;Add with specific value&amp;quot;)] IConstant constant)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are some special parameter types, that must all NOT be marked with a CgAttribute:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Interpreter&amp;lt;/code&amp;gt; - If you require the interpreter to do something, you can get it by adding a Interpreter parameter. You are probably doing something wrong if you need this. If you do need it, then you should be aware that your object may be shared among several interpreters, and you should therefore NOT store the value anywhere.&lt;br /&gt;
* &amp;lt;code&amp;gt;IList&amp;amp;lt;IConstant&amp;amp;gt;&amp;lt;/code&amp;gt; - This is roughly equivalent to a normal C# method that takes a &amp;lt;code&amp;gt;&amp;quot;params object[]&amp;quot;&amp;lt;/code&amp;gt;. This enables you to do advanced scenarios where the parameters from cgscript cannot be predicted. For obvious reasons there can be no other parameters marked with CgAttribute.&lt;br /&gt;
* other - If a parameter is not marked with a CgAttribute, it is presumed it is a IoC type that must be resolved when calling the function. This works for Constructors, Methods and Properties.&lt;br /&gt;
&lt;br /&gt;
== Overload resolution ==&lt;br /&gt;
&lt;br /&gt;
To find the right overload, a score is calculated.&lt;br /&gt;
&lt;br /&gt;
A function that takes an &amp;lt;code&amp;gt;IList&amp;amp;lt;IConstant&amp;amp;gt;&amp;lt;/code&amp;gt; as parameter is always a match, but the lowest priority match.&lt;br /&gt;
&lt;br /&gt;
A function that takes the exact type (or a type with a known conversion) will be a better match than a function that takes a very generic superclass. For example, a function x that has two overloads, one takes an IConstant and another that takes an ArrayConstant, when called with an ArrayConstant, the second overload takes precedence.&lt;br /&gt;
&lt;br /&gt;
Due to the automapping some constructs may have the same overload. For example a function x that has two overloads, one takes an NumberConstant and another that takes an int. These are considered equivalent, and it is totally random which is called.&lt;br /&gt;
&lt;br /&gt;
= Namespace =&lt;br /&gt;
&lt;br /&gt;
Objects as such do not have a namespace, but we decided to simulate it by having namespace objects.&lt;br /&gt;
&lt;br /&gt;
In the symbol table a variable called &amp;quot;Catglobe&amp;quot; is registered, this is an instance of GlobalNamespace.&lt;br /&gt;
&lt;br /&gt;
If you want to add some global function, then implement another class in &amp;lt;code&amp;gt;CatGlobe.Framework.Runtime.Library.GlobalFunctions&amp;lt;/code&amp;gt;. It must be a normal &amp;lt;code&amp;gt;CgScriptObject&amp;lt;/code&amp;gt;. The class must have no member variables since the instance is shared among all interpreters, and only static getters/setters/methods (although if you forgot to mark them static they will still work).&lt;br /&gt;
&lt;br /&gt;
You then register the class in the namespace you want it to appear. For instance here is the registration of Json in the GlobalNamespace:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
private static readonly JsonNamespace JsonNamespace = new JsonNamespace();&lt;br /&gt;
[Cg(&amp;quot;Json&amp;quot;, &amp;quot;The json namespace&amp;quot;)]&lt;br /&gt;
public static JsonNamespace Json { get { return JsonNamespace; } }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can call the functions in this namespace:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
return Catglobe.Json.Parse(Catglobe.Json.Encode({1, &amp;quot;&amp;quot;Hejsa&amp;quot;&amp;quot;}));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And because they are objects, you can also do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
object n = Catglobe.Json;&lt;br /&gt;
return n.Parse(n.Encode({1, &amp;quot;&amp;quot;Hejsa&amp;quot;&amp;quot;}));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Functions =&lt;br /&gt;
&lt;br /&gt;
Normal non-object functions - Yet to be written &lt;br /&gt;
&lt;br /&gt;
[[Category:Technical_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=MediaWiki:Sidebar&amp;diff=24765</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=MediaWiki:Sidebar&amp;diff=24765"/>
		<updated>2013-10-18T03:18:12Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;categorytree-portlet&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=MediaWiki:Sidebar&amp;diff=24764</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=MediaWiki:Sidebar&amp;diff=24764"/>
		<updated>2013-10-18T03:18:00Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;categorytree-portlet&lt;br /&gt;
[[Category:Quick_start]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=MediaWiki:Sidebar&amp;diff=24763</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=MediaWiki:Sidebar&amp;diff=24763"/>
		<updated>2013-10-18T03:17:17Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;categorytree-portlet&lt;br /&gt;
Category:Quick start&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Update_DCS_frequency&amp;diff=24761</id>
		<title>Update DCS frequency</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Update_DCS_frequency&amp;diff=24761"/>
		<updated>2013-10-18T03:11:07Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== Introduction  ==&lt;br /&gt;
&lt;br /&gt;
This page is created to show how to build DCS frequently. &lt;br /&gt;
&lt;br /&gt;
=== List of DCS  ===&lt;br /&gt;
&lt;br /&gt;
This table consists:&lt;br /&gt;
1. Dashboard/Monitor to which DCSs belong&lt;br /&gt;
2. DCSs need rebuilding&lt;br /&gt;
3. Rebuilding time&lt;br /&gt;
4. Axis need updating&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;VerticalTable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color: rgb(244, 219, 165); text-align: center;&amp;quot; | Dashboard/Monitor &lt;br /&gt;
! style=&amp;quot;background-color: rgb(244, 219, 165); text-align: center;&amp;quot; | DCS &lt;br /&gt;
! style=&amp;quot;background-color: rgb(244, 219, 165); text-align: center;&amp;quot; | Building Time &lt;br /&gt;
! style=&amp;quot;background-color: rgb(244, 219, 165); text-align: center;&amp;quot; | Updated Axis&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Danske Bank Dashboad, ID 7 &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | &lt;br /&gt;
9006cat - CEM Bank Intelligence &lt;br /&gt;
&lt;br /&gt;
9006cat - CEM Consumer&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 1AM every Monday&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | N/A&amp;lt;br&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Jyske Bank Dashboard, ID 33 &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | &lt;br /&gt;
9006cat - CEM Bank Intelligence &lt;br /&gt;
&lt;br /&gt;
9006cat - CEM Consumer&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 1AM every Monday&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | N/A&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Danske Bank, CEM Score, ID ID 104 &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 9006cat - Danske Bank &amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 1AM every Monday&amp;amp;nbsp;&lt;br /&gt;
|- style=&amp;quot;background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Pensam Bank, ID 98&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | &lt;br /&gt;
9006cat - CEM Bank Intelligence - PenSam Bank &lt;br /&gt;
&lt;br /&gt;
9006cat - CEM Consumer&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 1AM every Monday&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | N/A&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | CEM Economy Landing Page, ID 123&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | &lt;br /&gt;
9006cat - CEM Economy Intelligence (Konjunktur) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 1AM every Monday&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | &lt;br /&gt;
Quarters since Q1/1999&amp;lt;br&amp;gt;Quarters since Q1/1999 (Table)&amp;lt;br&amp;gt;Quarters since Q3/2000&amp;lt;br&amp;gt;Quarters since Q3/2000 (Table)&amp;lt;br&amp;gt;Quarters since Q4/2001&amp;lt;br&amp;gt;Quarters since Q4/2001 (Table)&amp;lt;br&amp;gt;Quarters since Q4/2003&amp;lt;br&amp;gt;Quarters since Q4/2003 (Table)&amp;lt;br&amp;gt;Quarters since Q3/2009&amp;lt;br&amp;gt;Quarters since Q3/2009 (Table)&amp;lt;br&amp;gt;Quarters since Q4/2009&amp;lt;br&amp;gt;Quarters since Q4/2009 (Table) &lt;br /&gt;
&lt;br /&gt;
Months since 10/2009&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | CEM Economy Landing Page, ID 123&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 9006cat - CEM Economy Intelligence (Konjunktur) (for exporting)&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 1AM every Monday&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Quarters&amp;lt;br&amp;gt;Months&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | CEM Economy Portal, ID 124&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | N/A&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 1AM every Monday&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | N/A&amp;lt;br&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | CEM Bank Monitor&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 8386cat - CEM Bank Intelligence&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 1AM every Monday (already being built for CEM Bank weekly task)&amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Uge&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Workflow  ==&lt;br /&gt;
Two work flows are created on mycatinet site: http://mycatinet.catglobe.com&amp;lt;br&amp;gt;&lt;br /&gt;
1. &amp;quot;Update DCS Frequency - Part 1 - Build DCS&amp;quot; (Resource ID: 36443047) is automatically run as schedule time.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Update DCS Frequency - Part 2 - Update Axis&amp;quot; (Resource ID: 36443055) is run manually.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Production_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Tracking_configuration&amp;diff=24760</id>
		<title>Tracking configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Tracking_configuration&amp;diff=24760"/>
		<updated>2013-10-18T03:10:49Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Version ===&lt;br /&gt;
&lt;br /&gt;
This documentation is updated in February 2009 for Catglobe version 5.6. Catglobe menus and commands are in English.&lt;br /&gt;
&lt;br /&gt;
== Automated tracking ==&lt;br /&gt;
&lt;br /&gt;
Catglobe offers a suite of best practices CG Scripts, which partners will be provided with upon request. Automated tracking is one of these scripts. The automated tracking CG script serves two main purposes:&lt;br /&gt;
&lt;br /&gt;
*Automatically sending the optimal number of emails in order to reach the weekly target.&lt;br /&gt;
*Automatically direct the outgoing emails to specific target groups according to demands and continuously adjusted in accordance with the response.&lt;br /&gt;
&lt;br /&gt;
Additionally, the system can be configured to send reminder emails to panelists who have not completed the survey within a certain time limit, if their quota is not closed.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
It is assumed that the reader is familiar with the general concepts of the Catglobe system, such as users, groups, rules, access rights, questionnaires, samples and quotas. Additionally, basic understanding of CG Script is required. This level of knowledge should be achieved with a Catglobe Data course I and II and some experience.&lt;br /&gt;
&lt;br /&gt;
=== Requirements and limitations ===&lt;br /&gt;
&lt;br /&gt;
The tracking should continue in one questionnaire for a certain (preferably long) period of time.&lt;br /&gt;
&lt;br /&gt;
The tracking quotas used for targeting certain target groups must be based on weeks, must be labeled according to certain rules, and categorized into a maximum of 3 categories (see description below and appendix 2 - quotas).&lt;br /&gt;
&lt;br /&gt;
The respondents must be existing users in the Catglobe system, and must be part of an existing panel with a questionnaire keeping information necessary for stratification (i.e. gender and age).&lt;br /&gt;
&lt;br /&gt;
Group rules must be according to description in this document.&lt;br /&gt;
&lt;br /&gt;
No guarantee is given regarding the scripts. Please contact Catglobe if any trouble is experienced. Functions included in the scripts are valid for the stated version of Catglobe.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preparing the CG Ssript for a project ==&lt;br /&gt;
&lt;br /&gt;
=== The main parts of the script ===&lt;br /&gt;
&lt;br /&gt;
The script consists of two main parts, as shown in the image below; part 1, which must be modified according to project specifications, and part 2, which is a standard script that should not be modified.&lt;br /&gt;
(some declarations)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//=======================================================&lt;br /&gt;
//PROJECT SPECIFIC CONSTANTS - BELOW THIS LINE ONLY =====&lt;br /&gt;
//=======================================================&lt;br /&gt;
(part 1 - project specifications)&lt;br /&gt;
//=======================================================&lt;br /&gt;
//PROJECT SPECIFIC CONSTANTS - ABOVE THIS LINE ONLY =====&lt;br /&gt;
//=======================================================&lt;br /&gt;
(part 2 - standard script)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In part 1 of the script, the following information must be filled in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
STEP 1. Choose test mode (test = true) or real mode (test = false)&lt;br /&gt;
STEP 2. Add receipients for status email&lt;br /&gt;
STEP 3. Specify a factor for each day of the week (no mails = 0)&lt;br /&gt;
STEP 4. Keep quota time frames up-to-date&lt;br /&gt;
STEP 5. Categorize quotas (type 1-3) and specify quota labels&lt;br /&gt;
STEP 6. Specify rule id&#039;s for rules in group used by Bulk Mail&lt;br /&gt;
STEP 7. Specify rule lables (for the same rules)&lt;br /&gt;
STEP 8. Specify Bulk Mail id&lt;br /&gt;
STEP 9. Specify RPQ id for a dummy user in the questionnaire&lt;br /&gt;
SCRIPT EXTENSION FOR REMINDERS ------------------------------------&lt;br /&gt;
STEP R1. Choose if reminders should be sent (Additional groups required)&lt;br /&gt;
STEP R2. (if reminders) Specify reminder delay days (max 7 days)&lt;br /&gt;
STEP R3. (if reminders) Reminder day groups&lt;br /&gt;
STEP R4. (if reminders) Reminder Temporary group id&lt;br /&gt;
STEP R5. (if reminders) Specify rule id&#039;s for rules in group used by BulkMail&lt;br /&gt;
STEP R6. (if reminders) Reminder bulkmail-id&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1. Test mode or real mode ===&lt;br /&gt;
&lt;br /&gt;
Use test mode (test = true) to test the script without actually rebuilding the group or sending any emails. Set test = false for real mode when the script has been tested.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//STEP 1. Choose test mode (test = true) or real mode (test = false)&lt;br /&gt;
bool test = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 2. Email recipients ===&lt;br /&gt;
&lt;br /&gt;
Each time the script is being executed, an email will be sent to recipients specified here. There is no limitation to the number of recipients. For each recipient, email address and name should be added as shown in the example.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//STEP 2. Add receipients for status email&lt;br /&gt;
// (Each respondent will need: email_recipient[] and&lt;br /&gt;
email_recipient_alias[])&lt;br /&gt;
arrayAdd(email_recipient, &amp;quot;john.smith@company.example&amp;quot;);&lt;br /&gt;
arrayAdd(email_recipient_alias,&amp;quot;John Smith&amp;quot;);&lt;br /&gt;
arrayAdd(email_recipient, &amp;quot;one.more@company.example&amp;quot;);&lt;br /&gt;
arrayAdd(email_recipient_alias,&amp;quot;One More&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3. A factor for each weekday ===&lt;br /&gt;
&lt;br /&gt;
For each day of the week, the total number of mails sent will be calculated as:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Number of mails = factor x (week quota target - week quota current)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For example if the week target is 100 and 40 respondents have completed until now, and today’s factor is 1.5; a total of 1.5 x (100-40) = 90 emails will be sent.&lt;br /&gt;
&lt;br /&gt;
All seven weekday variables must be specified. If no emails are to be sent for a certain day of the week, set the factor = 0 for that day.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//STEP 3. Specify a factor for each day of the week (no mails = 0)&lt;br /&gt;
number factor_monday = 0.8; // normal in this project = 0.8&lt;br /&gt;
number factor_tuesday = 1.0; // normal in this project = 1.0&lt;br /&gt;
number factor_wednesday = 1.2; // normal in this project = 1.2&lt;br /&gt;
number factor_thursday = 1.5; // normal in this project = 1.5&lt;br /&gt;
number factor_friday = 2.0; // normal in this project = 2.0&lt;br /&gt;
number factor_saturday = 3.0; // normal in this project = 3.0&lt;br /&gt;
number factor_sunday = 4.0; // normal in this project = 4.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommended to send out every day. In case a mail out will have to wait, for example for modifications in the questionnaire, just change the questionnaire status to closed/paused/open for test. Emails will only be sent if the questionnaire status is open.&lt;br /&gt;
&lt;br /&gt;
Which factors to choose will depend on the quality of the panel, the survey penetration, and other local variables. As a main rule, the factor should increase gradually from day to day during the week.&lt;br /&gt;
&lt;br /&gt;
=== Step 4. Quota time frames ===&lt;br /&gt;
&lt;br /&gt;
If additional quotas are being used for stratification (see the quota section,) time frames must be specified.&lt;br /&gt;
&lt;br /&gt;
A time frame has a start (time_frame_start) and an end (time_frame_end). The following rules must be complied with:&lt;br /&gt;
&lt;br /&gt;
*The number of time_frame_start and the number of time_frame_end must be equal.&lt;br /&gt;
*For any time frame; time_frame_end &amp;lt;= time_frame_start&lt;br /&gt;
*Two different time frames must never overlap each other.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//STEP 4. Keep quota time frames up-to-date&lt;br /&gt;
arrayAdd(time_frame_start,200751);&lt;br /&gt;
arrayAdd(time_frame_end ,200802);&lt;br /&gt;
arrayAdd(time_frame_start,200803);&lt;br /&gt;
arrayAdd(time_frame_end ,200806);&lt;br /&gt;
arrayAdd(time_frame_start,200807);&lt;br /&gt;
arrayAdd(time_frame_end ,200810);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5. Quota categorization and quota labels ===&lt;br /&gt;
&lt;br /&gt;
One quota for each week must be created, and labeled according to the quota labeling convention&lt;br /&gt;
(appendix 2). These quotas controls the total number of emails being sent. (These quotas should not be&lt;br /&gt;
inserted in the script.)&lt;br /&gt;
&lt;br /&gt;
When the only respondent requirement of a survey is the total number of interviews pr. week, no additional quotas will be needed. However, if we have more specific requirements, like i.e. 50/50 male/female, etc. additional quotas will be needed. The automated script supports stratification for up to 3 categories of additional quotas, for example gender, age group and geographical region.&lt;br /&gt;
&lt;br /&gt;
If additional quotas (in addition to the week quota) are being used for stratification, these must follow the standard in appendix 2.&lt;br /&gt;
&lt;br /&gt;
Additional quotas will not influence on the total number of emails.&lt;br /&gt;
&lt;br /&gt;
Examples of quota categories are gender, age and geography. Typically one would have 2 gender quotas, a number of age quotas and / or geographic and/or other quotas.&lt;br /&gt;
&lt;br /&gt;
For each quota, one arrayAdd() statement should be added as shown in the example below. The labels must match the last part of the quota labels exact.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//STEP 5. Categorize quotas (type 1-3) and specify quota labels&lt;br /&gt;
//project specific labels for quotas type 1&lt;br /&gt;
arrayAdd(quota_type_1_suffix,&amp;quot;Males&amp;quot;);&lt;br /&gt;
arrayAdd(quota_type_1_suffix,&amp;quot;Females&amp;quot;);&lt;br /&gt;
//project specific labels for quotas type 2&lt;br /&gt;
arrayAdd(quota_type_2_suffix,&amp;quot;Age 15-25&amp;quot;);&lt;br /&gt;
arrayAdd(quota_type_2_suffix,&amp;quot;Age 26-39&amp;quot;);&lt;br /&gt;
arrayAdd(quota_type_2_suffix,&amp;quot;Age 40-59&amp;quot;);&lt;br /&gt;
arrayAdd(quota_type_2_suffix,&amp;quot;Age 60+&amp;quot;);&lt;br /&gt;
//project specific names for quotas type 3&lt;br /&gt;
arrayAdd(quota_type_3_suffix,&amp;quot;Region 1&amp;quot;);&lt;br /&gt;
arrayAdd(quota_type_3_suffix,&amp;quot;Region 2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 6. Rule ids ===&lt;br /&gt;
&lt;br /&gt;
A group for emails must be created.&lt;br /&gt;
&lt;br /&gt;
If the only quotas are one pr. week, the group should consist of 1 rule only. This rule should include your normal sampling rules, and a usage variable: &amp;quot;Users who did not participate in the following questionnaire&amp;quot; (tracking questionnaire). If additional quotas are used, the number of rules is calculated by the following equation:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Number of rules = type 1 quotas x type 2 quotas x type 3 quotas&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the example above, 2 x 4 x 2 = 16 rules is required. The following table show which rules should be created for the quotas in the example above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;VerticalTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Rule # &lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Gender&lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Age&lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Geography&lt;br /&gt;
|-&lt;br /&gt;
| Rule 1&amp;lt;br&amp;gt;&lt;br /&gt;
| Males&amp;lt;br&amp;gt;&lt;br /&gt;
| 15-25&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 1&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 2&amp;lt;br&amp;gt;&lt;br /&gt;
| Males&amp;lt;br&amp;gt;&lt;br /&gt;
| 15-25&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 2&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 3&amp;lt;br&amp;gt;&lt;br /&gt;
| Males&amp;lt;br&amp;gt;&lt;br /&gt;
| 26-39&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 1&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 4&amp;lt;br&amp;gt;&lt;br /&gt;
| Males&amp;lt;br&amp;gt;&lt;br /&gt;
| 26-39&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 2&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 5&amp;lt;br&amp;gt;&lt;br /&gt;
| Males&amp;lt;br&amp;gt;&lt;br /&gt;
| 40-59&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 1&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 6&amp;lt;br&amp;gt;&lt;br /&gt;
| Males&amp;lt;br&amp;gt;&lt;br /&gt;
| 40-59&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 2&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 7&amp;lt;br&amp;gt;&lt;br /&gt;
| Males&amp;lt;br&amp;gt;&lt;br /&gt;
| 60+&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 1&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 8&amp;lt;br&amp;gt;&lt;br /&gt;
| Males&amp;lt;br&amp;gt;&lt;br /&gt;
| 60+&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 2&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 9&amp;lt;br&amp;gt;&lt;br /&gt;
| Females&amp;lt;br&amp;gt;&lt;br /&gt;
| 15-25&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 1&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 10&amp;lt;br&amp;gt;&lt;br /&gt;
| Females&amp;lt;br&amp;gt;&lt;br /&gt;
| 15-25&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 2&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 11&amp;lt;br&amp;gt;&lt;br /&gt;
| Females&amp;lt;br&amp;gt;&lt;br /&gt;
| 26-39&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 1&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 12&amp;lt;br&amp;gt;&lt;br /&gt;
| Females&amp;lt;br&amp;gt;&lt;br /&gt;
| 26-39&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 2&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 13&amp;lt;br&amp;gt;&lt;br /&gt;
| Females&amp;lt;br&amp;gt;&lt;br /&gt;
| 40-59&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 1&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 14&amp;lt;br&amp;gt;&lt;br /&gt;
| Females&amp;lt;br&amp;gt;&lt;br /&gt;
| 40-59&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 2&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 15&amp;lt;br&amp;gt;&lt;br /&gt;
| Females&amp;lt;br&amp;gt;&lt;br /&gt;
| 60+&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 1&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Rule 16&amp;lt;br&amp;gt;&lt;br /&gt;
| Females&amp;lt;br&amp;gt;&lt;br /&gt;
| 60+&amp;lt;br&amp;gt;&lt;br /&gt;
| Region 2&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The rules should be labeled so they are easy to recognize.&lt;br /&gt;
&lt;br /&gt;
The script will need a rule id and a label for each rule.&lt;br /&gt;
&lt;br /&gt;
The only way to make sure the system can figure out the relation between the quotas and the rules is if the rules are declared in a specific order. Therefore it is very important to declare the rules in the following order:&lt;br /&gt;
&lt;br /&gt;
*All rules covering the first quota in quota type 1&lt;br /&gt;
**All rules also covering the first quota in quota type 2&lt;br /&gt;
***One rule for each quota in quota type 3, (in the same order the quota type 3 quotas is specified.)&lt;br /&gt;
**All rules covering the second quota in quota type 2&lt;br /&gt;
***One rule for each quota in quota type 3, (in the same order the quota type 3 quotas is specified.)&lt;br /&gt;
**Etc...&lt;br /&gt;
*All rules covering the second quota in quota type 1&lt;br /&gt;
**Etc...&lt;br /&gt;
*Etc...&lt;br /&gt;
&lt;br /&gt;
The following example would be the correct declaration of rules for the example used above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//STEP 6. Specify rule id&#039;s for rules in group used by Bulk Mail&lt;br /&gt;
//It is crucial that rules are added in correct order.&lt;br /&gt;
Follow instructions from Catglobe&lt;br /&gt;
arrayAdd(rule_id,2584170); // Males 15-25 Region 1&lt;br /&gt;
arrayAdd(rule_id,2584169); // Males 15-25 Region 2&lt;br /&gt;
arrayAdd(rule_id,2584168); // Males 26-39 Region 1&lt;br /&gt;
arrayAdd(rule_id,2584167); // Males 26-39 Region 2&lt;br /&gt;
arrayAdd(rule_id,2584174); // Males 40-59 Region 1&lt;br /&gt;
arrayAdd(rule_id,2584173); // Males 40-59 Region 2&lt;br /&gt;
arrayAdd(rule_id,2584172); // Males 60+ Region 1&lt;br /&gt;
arrayAdd(rule_id,2584171); // Males 60+ Region 2&lt;br /&gt;
arrayAdd(rule_id,2584178); // Females 15-25 Region 1&lt;br /&gt;
arrayAdd(rule_id,2584177); // Females 15-25 Region 2&lt;br /&gt;
arrayAdd(rule_id,2584176); // Females 26-39 Region 1&lt;br /&gt;
arrayAdd(rule_id,2584175); // Females 26-39 Region 2&lt;br /&gt;
arrayAdd(rule_id,2584182); // Females 40-59 Region 1&lt;br /&gt;
arrayAdd(rule_id,2584181); // Females 40-59 Region 2&lt;br /&gt;
arrayAdd(rule_id,2584180); // Females 60+ Region 1&lt;br /&gt;
arrayAdd(rule_id,2584179); // Females 60+ Region 2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7. Rule Labels ===&lt;br /&gt;
&lt;br /&gt;
For each rule id, one rule label should be specified. The order must be the same as the orders in the rule declaration above. These labels are being used in the status info email.&lt;br /&gt;
&lt;br /&gt;
In the example above, the following rule labels would be appropriate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//STEP 7. Specify rule lables (for the same rules)&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Males 15-25 Region 1&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Males 15-25 Region 2&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Males 26-39 Region 1&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Males 26-39 Region 2&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Males 40-59 Region 1&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Males 40-59 Region 2&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Males 60+ Region 1&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Males 60+ Region 2&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Females 15-25 Region 1&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Females 15-25 Region 2&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Females 26-39 Region 1&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Females 26-39 Region 2&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Females 40-59 Region 1&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Females 40-59 Region 2&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Females 60+ Region 1&amp;quot;);&lt;br /&gt;
arrayAdd(rule_label,&amp;quot;Females 60+ Region 2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 8. Bulk mail id ===&lt;br /&gt;
&lt;br /&gt;
In the communicator tab of the tracking questionnaire, a bulk mail must be prepared with a link to the&lt;br /&gt;
tracking questionnaire. Choose the group to send to. It is crucial that the group is put in the field: Groups&lt;br /&gt;
to be rebuilt.&lt;br /&gt;
&lt;br /&gt;
[[Image:Tracking configuration - Prepare CGS - Bulkmail.jpg]]&lt;br /&gt;
&lt;br /&gt;
Insert the bulk mail id like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//STEP 8. Specify Bulk Mail id&lt;br /&gt;
number bulkmailid = 393621;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 9. RPQ Id for dummy user ===&lt;br /&gt;
&lt;br /&gt;
The script must be executed in the context of a RPQ (Questionnaire answer sheet). Thus a dummy user should be sampled to the questionnaire. Get the RPQ Id for this user either by performing an export, or get it by batch executing a small CG script.&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;VerticalTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color: rgb(153,153,255);&amp;quot; | [[Image:Catinet logo.gif]] &lt;br /&gt;
! style=&amp;quot;background-color: rgb(153,153,255);&amp;quot; | CATINÉT NOTICE: A user has been created on mycatinet for this purpose. Add the user with username ‘Automated_mailout’ to the questionnaire and get the RPQ id of this user.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//STEP 9. Specify RPQ id for a dummy user in the questionnaire&lt;br /&gt;
number neededRPQId = 621758923;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 10. Multiple countries in one PQ ===&lt;br /&gt;
&lt;br /&gt;
In this case, &#039;&#039;Multiple countries  in one PQ&#039;&#039; means each country is running as an independent survey with its own quotas.&lt;br /&gt;
&lt;br /&gt;
Each country will also have its own workflow.&lt;br /&gt;
&lt;br /&gt;
Example 1 (Not using this feature):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//STEP 10.&lt;br /&gt;
bool   useCountryId = false;&lt;br /&gt;
string country = &amp;quot;&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2 (Using the feature multiple countries in one PQ):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//STEP 10.&lt;br /&gt;
bool   useCountryId = true;&lt;br /&gt;
string country = &amp;quot;DK&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;VerticalTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color: rgb(153,153,255);&amp;quot; | [[Image:Catinet logo.gif]] &lt;br /&gt;
! style=&amp;quot;background-color: rgb(153,153,255);&amp;quot; | CATINÉT NOTICE: This feature was added in 2009, and many of the older workflows do not have this capability.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Multiple countries impact on quotas ====&lt;br /&gt;
&lt;br /&gt;
When one questionnaire holds quotas for multiple countries. The country information must be included in all quota names.&lt;br /&gt;
&lt;br /&gt;
In these cases, the naming convention will be different, (see appendix about quotas.)&lt;br /&gt;
&lt;br /&gt;
== Scheduling the script ==&lt;br /&gt;
&lt;br /&gt;
For each tracking questionnaire, a workflow must be created. (Tools -&amp;gt; Administration -&amp;gt; Work flow). When the CG script is ready, it should be pasted into the Script tab of the workflow.&lt;br /&gt;
&lt;br /&gt;
Always test the script by setting test = true. (Remember to set test = false after testing.)&lt;br /&gt;
&lt;br /&gt;
When the script is ready and tested, schedule it for daily execution. In the workflow list, highlight the workflow, choose &#039;&#039;schedule&#039;&#039;, choose &#039;&#039;Re-occurrence build&#039;&#039;, set Interval = 1 day, set an appropriate time for first time and last time.&lt;br /&gt;
&lt;br /&gt;
[[Image:Tracking configuration - Schedule CGS 1.jpg]]&lt;br /&gt;
&lt;br /&gt;
When the script is scheduled, it will be displayed in the &amp;quot;Scheduled CatTask&amp;quot; list. (In the current version, you will only be able to see CatTasks you have created yourself.&lt;br /&gt;
&lt;br /&gt;
[[Image:Tracking configuration - Schedule CGS 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Appendix 1 - Week system ==&lt;br /&gt;
&lt;br /&gt;
The script supports the European week system (ISO 8601)&lt;br /&gt;
&lt;br /&gt;
*The week with the year’s first Thursday in it, is week 01.&lt;br /&gt;
*The first day of a week is always a Monday.&lt;br /&gt;
*A week always consist of 7 days.&lt;br /&gt;
&lt;br /&gt;
To make sure the same week system is used in the questionnaire, it is recommended to insert a dummy question of type number labeled YEARWEEK in the questionnaire, with the following CG script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
array dateTime  = getDateTime();&lt;br /&gt;
number year_    = convertToNumber(dateTime[0]);&lt;br /&gt;
number month_   = convertToNumber(dateTime[1]);&lt;br /&gt;
number week_    = convertToNumber(dateTime[7]);&lt;br /&gt;
number wyear;&lt;br /&gt;
number YWnumber;&lt;br /&gt;
&lt;br /&gt;
if(week_ &amp;gt; 51 &amp;amp;&amp;amp; month_ == 1){&lt;br /&gt;
  wyear = year_ -1;&lt;br /&gt;
}&lt;br /&gt;
else if(week_ == 1 &amp;amp;&amp;amp; month_ == 12){&lt;br /&gt;
  wyear = year_ +1;&lt;br /&gt;
}&lt;br /&gt;
else wyear = year_;&lt;br /&gt;
&lt;br /&gt;
YWnumber = (wyear * 100) + week_;&lt;br /&gt;
YEARWEEK = YWnumber;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A solution for tracking weeks starting on any weekday has been requested, but this is not yet supported.&lt;br /&gt;
&lt;br /&gt;
== Appendix 2 - Quotas ==&lt;br /&gt;
&lt;br /&gt;
=== The PQ is configured for one country ===&lt;br /&gt;
&lt;br /&gt;
All quotas to be part of the automated tracking must be based on weeks. At least one quota must exist for each week, labeled [YYYYWW], for example 200810, 200811, etc. See also Appendix 1: Week system. &lt;br /&gt;
&lt;br /&gt;
Up to 3 categories of additional quotas are allowed. These must be based on weeks (one or multiple weeks), all additional quotas must follow the same time frame scheme, and the quotas must be labeled according to specifications below.&lt;br /&gt;
&lt;br /&gt;
These additional quotas must be labeled [YYYY WW - YYYY WW: [free text]].&lt;br /&gt;
&lt;br /&gt;
Quota examples:&lt;br /&gt;
&lt;br /&gt;
*200801&lt;br /&gt;
*2008 01 - 2008 04: Males&lt;br /&gt;
*2008 01 - 2008 04: Females&lt;br /&gt;
*2008 01 - 2008 04: Age 15-25&lt;br /&gt;
&lt;br /&gt;
One group must be created according to specifications below.&lt;br /&gt;
&lt;br /&gt;
The sum of target for quotas in one category must be equal to or more than the sum of the week quotas for the same interval of weeks.&lt;br /&gt;
&lt;br /&gt;
==== Example: ====&lt;br /&gt;
&lt;br /&gt;
Assume the following week quotas have been defined:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;VerticalTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Quota label &lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Quota target&lt;br /&gt;
|-&lt;br /&gt;
| 200801&lt;br /&gt;
| 100&lt;br /&gt;
|-&lt;br /&gt;
| 200802&lt;br /&gt;
| 100&lt;br /&gt;
|-&lt;br /&gt;
| 200803&lt;br /&gt;
| 100&lt;br /&gt;
|-&lt;br /&gt;
| 200804&lt;br /&gt;
| 100&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also assume that other quotas are based on 4 weeks. The following targets will be allowed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;VerticalTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Quota label &lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Quota target&lt;br /&gt;
|-&lt;br /&gt;
| 2008 01 - 2008 04: Males&lt;br /&gt;
| 200&lt;br /&gt;
|-&lt;br /&gt;
| 2008 01 - 2008 04: Females&lt;br /&gt;
| 200&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following targets will also be allowed. These targets will never be reached, but it is a useful method to allow a little deviation from the perfect target.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;VerticalTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Quota label &lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Quota target&lt;br /&gt;
|-&lt;br /&gt;
| 2008 01 - 2008 04: Males&lt;br /&gt;
| 220&lt;br /&gt;
|-&lt;br /&gt;
| 2008 01 - 2008 04: Females&lt;br /&gt;
| 230&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following targets will &#039;&#039;&#039;not&#039;&#039;&#039; be allowed. In this case the sum of the sub targets are less than the main target.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;VerticalTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Quota label &lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Quota target&lt;br /&gt;
|-&lt;br /&gt;
| 2008 01 - 2008 04: Males&lt;br /&gt;
| 190&lt;br /&gt;
|-&lt;br /&gt;
| 2008 01 - 2008 04: Females&lt;br /&gt;
| 190&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Remember, the week quota target is the quota used to calculate the total number of emails to send. Other quotas are used for targeting specific target groups.&lt;br /&gt;
&lt;br /&gt;
100% of the respondents must be included in each quota category.&lt;br /&gt;
&lt;br /&gt;
=== The PQ is configured for multiple countries ===&lt;br /&gt;
&lt;br /&gt;
The same general rules applies as for single countries PQ, but with the following modifications:&lt;br /&gt;
&lt;br /&gt;
If the PQ is configured for multiple countries, the country identifier (assigned to the variable &#039;&#039;country&#039;&#039; in the workflow) should be appended at the end of the quota name.&lt;br /&gt;
&lt;br /&gt;
==== Example: ====&lt;br /&gt;
&lt;br /&gt;
If the above example was part of a multiple country survey, the multiple conotry configuration of the script would look like below for Denmark.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//STEP 10.&lt;br /&gt;
bool   useCountryId = true;&lt;br /&gt;
string country = &amp;quot;DK&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In that case, the quota names from the example above, would be like:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;VerticalTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Quota label &lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Quota target&lt;br /&gt;
|-&lt;br /&gt;
| 200801 DK&lt;br /&gt;
| 100&lt;br /&gt;
|-&lt;br /&gt;
| 200802 DK&lt;br /&gt;
| 100&lt;br /&gt;
|-&lt;br /&gt;
| 200803 DK&lt;br /&gt;
| 100&lt;br /&gt;
|-&lt;br /&gt;
| 200804 DK&lt;br /&gt;
| 100&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;VerticalTable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Quota label &lt;br /&gt;
! style=&amp;quot;background-color: rgb(244,219,165); text-align: center&amp;quot; | Quota target&lt;br /&gt;
|-&lt;br /&gt;
| 2008 01 - 2008 04 DK: Males&lt;br /&gt;
| 200&lt;br /&gt;
|-&lt;br /&gt;
| 2008 01 - 2008 04 DK: Females&lt;br /&gt;
| 200&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Production guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Tracking_projects&amp;diff=24759</id>
		<title>Tracking projects</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Tracking_projects&amp;diff=24759"/>
		<updated>2013-10-18T03:10:34Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This page will display all the tracking projects and the deadline for the data deliveries.&lt;br /&gt;
&lt;br /&gt;
=== Demo ===&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; bordercolor=&amp;quot;#000000&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tr height=&amp;quot;18&amp;quot; bgcolor=&amp;quot;#CCCCCC&amp;quot; bordercolordark=&amp;quot;#000000&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;td height=&amp;quot;18&amp;quot; width=&amp;quot;86&amp;quot;&amp;gt;&#039;&#039;&#039;Project Name&#039;&#039;&#039;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;255&amp;quot;&amp;gt;&#039;&#039;&#039;Delivery&#039;&#039;&#039;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;529&amp;quot;&amp;gt;&#039;&#039;&#039;Quota&#039;&#039;&#039;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr height=&amp;quot;17&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;td height=&amp;quot;17&amp;quot;&amp;gt;8653ins&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;The first week in every month, not    strict&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;Have to have 75 completed every week,    but the other quota can have plus/minus some..&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr height=&amp;quot;17&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;td height=&amp;quot;17&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;	&lt;br /&gt;
&lt;br /&gt;
[[category:Production guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Retrieve_data_from_top-1000-company_site&amp;diff=24756</id>
		<title>Retrieve data from top-1000-company site</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Retrieve_data_from_top-1000-company_site&amp;diff=24756"/>
		<updated>2013-10-18T03:09:41Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
== Introduction  ==&lt;br /&gt;
&lt;br /&gt;
This Solution is used to retrieve data from site http://top1000.dk/ and then import to Catglobe system &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Solution  ==&lt;br /&gt;
&lt;br /&gt;
We have &lt;br /&gt;
&lt;br /&gt;
*Server Path: \catproc\Share\CatGlobe Teams\Production\Top 1000\ &lt;br /&gt;
*Use Tool Top1000dk.exe to get raw data from http://top1000.dk/ site from server path &lt;br /&gt;
*Customize data, import to Excel file &lt;br /&gt;
*Run Macro (get Macro source code from from server path&amp;lt;br&amp;gt; &lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== Step 1 - Generate files by Internal Tool  ===&lt;br /&gt;
&lt;br /&gt;
*Run Top1000dk.exe Tool, input index of page. Generate all pages. Note: run only one instance of this tool at a time.&lt;br /&gt;
&lt;br /&gt;
[[Image:Top1000Tool 1.png]]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Go to your local C:\ to get exported files&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Step 2 - Customize raw data  ===&lt;br /&gt;
&lt;br /&gt;
*Merge all files we get from step1 to one file &lt;br /&gt;
*Replace character &amp;quot;~&amp;quot; as &amp;quot;$$&amp;quot; and &amp;quot;|&amp;quot; as &amp;quot;$&amp;quot; (the purpose is separating into columns when importing these files to Excel)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Customize Data.png]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Save file as txt format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Step 2 - Import to Excel  ===&lt;br /&gt;
&lt;br /&gt;
*Open Excel application -&amp;amp;gt; select Data tab -&amp;amp;gt; Get External data -&amp;amp;gt; From Text &lt;br /&gt;
*Browse the txt file we get from step2 &lt;br /&gt;
*Follow step 1: Choose Delimited option&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Import step 1.png]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Follow step 2: Unselect &amp;quot;Tab&amp;quot; option, Select &amp;quot;Other&amp;quot; option = @&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Import step 2.png]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Step 3 - Customize Excel data  ===&lt;br /&gt;
&lt;br /&gt;
Because of limitation of the original site http://top1000.dk/, we encounter some problems with Unicode and long names which are displayed as &amp;quot;...&amp;quot; &lt;br /&gt;
&lt;br /&gt;
*Open file &amp;quot;Unicode name&amp;quot; from server path to get list of incorrect names and replacements. &lt;br /&gt;
*Replace all incorrect unicode character in file we get from Step2 by correct ones. Tips: we use IFERROR and VLOOKUP functions&lt;br /&gt;
&lt;br /&gt;
[[Image:Vlookup function.png]] &lt;br /&gt;
&lt;br /&gt;
*Similarly, replace three-dot companies from the file 3-dot companies. We get the list of replacements of three-dot companies from file &amp;quot;3-dot companies&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Step 3 - Run Macro  ===&lt;br /&gt;
&lt;br /&gt;
*Get Macro source code from server path &lt;br /&gt;
*Orderly run these functions:&lt;br /&gt;
&lt;br /&gt;
- Run Macro &amp;quot;top1000One&amp;quot; &amp;lt;br&amp;gt; - Run Macro &amp;quot;top1000Two&amp;quot; &amp;lt;br&amp;gt; - Run Macro &amp;quot;top1000Three&amp;quot; &amp;lt;br&amp;gt; - Run Macro &amp;quot;top1000Four&amp;quot; &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Step 4 -   ===&lt;br /&gt;
&lt;br /&gt;
Test your work, compare to original site http://top1000.dk/da/top1000/1/rank/ASC&lt;br /&gt;
&lt;br /&gt;
[[Category:Production_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Questionnaire_Specification&amp;diff=24755</id>
		<title>Questionnaire Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Questionnaire_Specification&amp;diff=24755"/>
		<updated>2013-10-18T03:09:07Z</updated>

		<summary type="html">&lt;p&gt;Wikicatglobe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
=Introduction=&lt;br /&gt;
This specification contains some basic rules that we need to follow when creating a questionnaire specification in order to get it done as fast as possible.&lt;br /&gt;
= Content =&lt;br /&gt;
&lt;br /&gt;
==Important features== &lt;br /&gt;
&lt;br /&gt;
*Label &lt;br /&gt;
*Type &lt;br /&gt;
*Text &lt;br /&gt;
**In each language&lt;br /&gt;
*Answer options &lt;br /&gt;
**Value &amp;amp;amp; Text &lt;br /&gt;
**Semi open answer option value &lt;br /&gt;
**Min/Max value &lt;br /&gt;
**Randomize? &lt;br /&gt;
**Rotate? &lt;br /&gt;
**No multi&lt;br /&gt;
*Sub questions &lt;br /&gt;
**Rotate? &lt;br /&gt;
**Randomize?&lt;br /&gt;
*Conditions &lt;br /&gt;
**Show if &lt;br /&gt;
**Go to question if &lt;br /&gt;
**Exclude answer options if &lt;br /&gt;
**Exclude answer option from &lt;br /&gt;
**Include answer option if &lt;br /&gt;
**Include answer option from &lt;br /&gt;
**Exclude sub question if &lt;br /&gt;
**Include sub question if&lt;br /&gt;
*Is scripted? special action need to be taken &lt;br /&gt;
*Points &lt;br /&gt;
*RPQ Status &lt;br /&gt;
*Others (anything not mentioned in the previous parts)&lt;br /&gt;
&lt;br /&gt;
== Format  ==&lt;br /&gt;
&lt;br /&gt;
1. English command is a must &lt;br /&gt;
&lt;br /&gt;
2. Different colors should be used to distinguish between what to be shown in the questionnaire and notes/commands to the questionnaire creator &lt;br /&gt;
&lt;br /&gt;
3. Horizontal lines should be used to separate different parts of a question &lt;br /&gt;
&lt;br /&gt;
4. Question text should be written in plain text, in case HTML is required, please state it clearly &lt;br /&gt;
&lt;br /&gt;
5. Sub question should be indexed from 0 (like what is shown in questionnaire editor) &lt;br /&gt;
&lt;br /&gt;
6. Answer options should be indexed from 1 (if no special values are written, indexes will be used as values) &lt;br /&gt;
&lt;br /&gt;
7. Sub questions and answer options could be described in list format or table (whatever can be achieved fast from the original description sent by the end-client) &lt;br /&gt;
&lt;br /&gt;
Order of attributes: &lt;br /&gt;
&lt;br /&gt;
1. Question label and question type &lt;br /&gt;
&lt;br /&gt;
2. Conditions/validation/scripts/status/points &lt;br /&gt;
&lt;br /&gt;
3. Question text4. Sub questions5. Answer options &lt;br /&gt;
&lt;br /&gt;
6. The exact way that the question should look (if it is expected to look different from what generated by the system) &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples:&#039;&#039;&#039;&amp;lt;br&amp;gt;[[Image:Samples.jpg]]&amp;lt;br&amp;gt;[[Image:Sample 2.jpg]]&amp;lt;br&amp;gt;[[Image:Sample 3.jpg]]&amp;lt;br&amp;gt;[[Image:Sample 4.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Here is a sample document: [[Media:Reduceret_sp%C3%B8rgeskema_finale_catin%C3%A9t_to_Vietnam_version_1_March_-_UPDATED.doc|sample]] &lt;br /&gt;
&lt;br /&gt;
[[Category:Production_guidelines]]&lt;/div&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
</feed>