D:\CRM_Project\CRM_Metadata_Structure\NetBeamsICM_TestProject\ICM_DB_TestComponents\src\java\unstructured_data_parser\Convert2DAO_Class_UsingBusinessRule_1.java
  1 /*
  2  * To change this license header, choose License Headers in Project Properties.
  3  * To change this template file, choose Tools | Templates
  4  * and open the template in the editor.
  5  */
  6 package unstructured_data_parser;
  7 
  8 import constants.MainConstants;
  9 import java.util.ArrayList;
 10 import unstructured_data_idao.TokenValueDAO;
 11 import java.util.StringTokenizer;
 12 import unstructured_data_idao.ExcelCellMap2DAO;
 13 import unstructured_data_idao.ExcelColumnMap2DAO;
 14 import unstructured_data_idao.ExcelDAO_Constants;
 15 import unstructured_data_idao.OneRow_ExcelCells;
 16 import unstructured_data_idao.JavaCodeGeneratorDAO;
 17 import java.io.BufferedWriter;
 18 import java.io.FileWriter;
 19 import java.io.IOException;
 20 
 21 
 22 /**
 23  * @author sameldin
 24  * This converter will create the following:
 25  *      XML file with Excel sheet values. This XML would stored into the database
 26  *      DAO which would be used to load XML file and will run as a part of IDAO
 27  * The name of each file and DAO would be the same of Excel sheet.
 28  * For example, the excel file name is:     "SimpleInputExcelSheet.xlsx"
 29  *      XML file name would be:             "SimpleInputExcelSheet.XML"
 30  *      DAO class name would be:            "SimpleInputExcelSheet_DAO"
 31  * DAO class would be stored in package folder for future use as we convert from XML to DAO object. 
 32  * The DAO object which would be running as service in memory.
 33  * 
 34  */
 35 public class Convert2DAO_Class_UsingBusinessRule_1 {
 36     
 37     ArrayList<JavaCodeGeneratorDAO> classJavaCodeGeneratorDAOArrayList = null;
 38     String newLine = "\n";
 39 
 40     
 41     public Convert2DAO_Class_UsingBusinessRule_1(
 42             ArrayList <OneRow_ExcelCells> passedAllExcelRowsDAO_ArrayList,
 43             ArrayList <ExcelColumnMap2DAO> passedAllHorizontalMap2DAO_ArrayList,
 44             ArrayList <ExcelColumnMap2DAO> passedAllVerticalMap2DAO_ArrayList ){
 45         
 46         
 47         String javaCompliedCodePath = "D:/CRM_Project/CRM_Metadata_Structure/ParserConverterSeedFramework/build/classes/using_business_rule_1";
 48         //String javaDAO_SourceCodePath = "D:/CRM_Project/CRM_Metadata_Structure/ParserConverterSeedFramework/src/java/using_business_rule_1/SimpleInputExcelSheetDAO.java";
 49         //======================
 50         String javaDAO_SourceCodePath = "D:/CRM_Project/CRM_Metadata_Structure/ICM_InputData/TestJavaFiles/DAO_TargetCompilation/SimpleInputExcelSheetDAO.java";
 51 
 52         
 53         OneRow_ExcelCells tempOneRow_ExcelCells = passedAllExcelRowsDAO_ArrayList.get(0);
 54         int result = convertCellHeaders2DAOPrivateProperties(
 55                 tempOneRow_ExcelCells,
 56                 passedAllHorizontalMap2DAO_ArrayList,
 57                 passedAllVerticalMap2DAO_ArrayList
 58         );
 59 
 60         String dao_className = nameDAO_Class("SimpleInputExcelSheet.xlsx");
 61         String javaDAO_MappingString = 
 62                     "package " + nameDAO_Package(dao_className) + ";" + newLine
 63                 +   "public class " + nameDAO_Class(dao_className) 
 64                 +   " { " // first open braket
 65                 +   newLine // class starting bracket
 66                 +   newLine
 67                 +   getJavaDAO_VariableMappingString(classJavaCodeGeneratorDAOArrayList)
 68                 +   newLine
 69                 +   newLine                
 70                 +   getJavaDAO_MethodsMappingString(classJavaCodeGeneratorDAOArrayList)
 71                 +   newLine
 72                 + "}";  // last close bracket
 73         // start creating the java DAO file
 74                 FileWriter localFileWriter = null;
 75                 BufferedWriter localBufferedWriter = null;
 76 
 77                 try 
 78                 {
 79                         localFileWriter = new FileWriter(javaDAO_SourceCodePath);
 80                         localBufferedWriter = new BufferedWriter(localFileWriter);
 81                         localBufferedWriter.write(javaDAO_MappingString);
 82                         System.out.println("Done");                
 83                 } catch (IOException e) 
 84                 {
 85                         e.printStackTrace();
 86                 } finally 
 87                 {
 88                         try 
 89                         {
 90                                 if (localBufferedWriter != null)
 91                                         localBufferedWriter.close();
 92                                 if (localFileWriter != null)
 93                                         localFileWriter.close();
 94                         } catch (IOException ex) 
 95                         {
 96                                 ex.printStackTrace();
 97                         }
 98                 }
 99         
100         int stopDebugger = 0;
101     }
102     /*
103     
104     */
105     String nameDAO_Class(String excelFileName){
106     
107         //String tempString = "SimpleInputExcelSheet.xlsx";
108         return("SimpleInputExcelSheetDAO");
109     }
110     /*
111     
112     */
113     String nameDAO_Package(String excelFileName){
114     
115         return("using_business_rule_1");
116     }
117     /*
118     
119     */
120     String getJavaDAO_VariableMappingString(ArrayList<JavaCodeGeneratorDAO> passedJavaCodeGeneratorDAOArrayList) {
121 
122         if(null == passedJavaCodeGeneratorDAOArrayList){
123             System.out.println("passedJavaCodeGeneratorDAOArrayList is null ");
124             return(null);        
125         }
126         if(passedJavaCodeGeneratorDAOArrayList.size() <= 0){
127             System.out.println("passedJavaCodeGeneratorDAOArrayList size is zero ");
128             return(null);        
129         }
130         String javaDAO_MappingString = "";
131         
132         int index = 0;
133         for(index = 0; index < passedJavaCodeGeneratorDAOArrayList.size();index++){
134             
135             JavaCodeGeneratorDAO localJavaCodeGeneratorDAO = passedJavaCodeGeneratorDAOArrayList.get(index);
136             int dataTypeValue = localJavaCodeGeneratorDAO.getDataTypeValue();
137             switch(dataTypeValue)
138             {
139                     case ExcelDAO_Constants.NUMERIC_DOUBLE_INDEX:
140                         javaDAO_MappingString += "     double " + localJavaCodeGeneratorDAO.getFieldNameString() + "  = 0;" + newLine;
141                     break;
142                     case ExcelDAO_Constants.STRING_LABEL_INDEX:
143                         javaDAO_MappingString += "     String " + localJavaCodeGeneratorDAO.getFieldNameString() + "  = \"\";" + newLine;
144                     break;
145                     case ExcelDAO_Constants.BOOLEAN_EVALUATION_INDEX:
146                     break;
147                     case ExcelDAO_Constants.EXCEL_CELL_TYPE_FORMULA:
148                     break;
149                     case ExcelDAO_Constants.FORMULA_SUM_COLUMN_CELLS_INDEX:
150                     break;
151                     case ExcelDAO_Constants.FORMULA_MULTIPLICATION_CELLS_INDEX:
152                     break;
153                     case ExcelDAO_Constants.FORMULA_COMPLEX_CELLS_INDEX:
154                     break;
155                     case ExcelDAO_Constants.STRING_COMMENT_INDEX:
156                     case ExcelDAO_Constants.EXCEL_CELL_TYPE_ERROR:
157                     break;
158                     case ExcelDAO_Constants.EXCEL_CELL_TYPE_BLANK:
159                     break;
160                     default:
161             }
162         }
163         // add two new lines
164         javaDAO_MappingString += newLine + newLine;
165         return (javaDAO_MappingString);
166         
167     }
168         String getJavaDAO_MethodsMappingString(ArrayList<JavaCodeGeneratorDAO> passedJavaCodeGeneratorDAOArrayList) {
169 
170         if(null == passedJavaCodeGeneratorDAOArrayList){
171             System.out.println("passedJavaCodeGeneratorDAOArrayList is null ");
172             return(null);        
173         }
174         if(passedJavaCodeGeneratorDAOArrayList.size() <= 0){
175             System.out.println("passedJavaCodeGeneratorDAOArrayList size is zero ");
176             return(null);        
177         }
178         String javaDAO_MappingString = "";
179         int index = 0;
180         
181         for(index = 0; index < passedJavaCodeGeneratorDAOArrayList.size();index++){
182             
183             JavaCodeGeneratorDAO localJavaCodeGeneratorDAO = passedJavaCodeGeneratorDAOArrayList.get(index);
184             javaDAO_MappingString += localJavaCodeGeneratorDAO.getGetMethodString() + newLine;
185             javaDAO_MappingString += localJavaCodeGeneratorDAO.getSetMethodString() + newLine;
186         }
187         return (javaDAO_MappingString);
188     }
189     /*
190     
191     */
192     int convertCellHeaders2DAOPrivateProperties(            
193             OneRow_ExcelCells passedAllExcelRowsDAO_ArrayList,
194             ArrayList <ExcelColumnMap2DAO> passedAllHorizontalMap2DAO_ArrayList,
195             ArrayList <ExcelColumnMap2DAO> passedAllVerticalMap2DAO_ArrayList ){
196 
197         String javaClassPrivatePropertiesString = "";
198         ArrayList <ExcelCellMap2DAO> oneRowArrayListCells = passedAllExcelRowsDAO_ArrayList.getOneRowDAOArrayList(); 
199 
200         classJavaCodeGeneratorDAOArrayList = new ArrayList<JavaCodeGeneratorDAO>();
201         int index = 0;
202         for(index = 0; index < oneRowArrayListCells.size(); index ++){
203             
204             // insratiate code generator DAO
205             JavaCodeGeneratorDAO tempJavaCodeGeneratorDAO = new JavaCodeGeneratorDAO();
206             ExcelCellMap2DAO headerCell = oneRowArrayListCells.get(index);
207             // we are using (row index * 1000 + column index) as DOA ID number for access with formula
208             int rowIndex = headerCell.getRowIndex() + 1;
209             int columnIndex = headerCell.getColumnIndex() + 1;
210             int rowColumnID = rowIndex * ExcelDAO_Constants.DAO_ROW_COLUMN_ID_CONVERTER + columnIndex;
211             tempJavaCodeGeneratorDAO.setRowColumnID(rowColumnID); 
212             String trimmedString = headerCell.getPossibleVariableName();
213             trimmedString = trimmedString.trim();
214             String variableName_Number = trimmedString + "_" + headerCell.getKnownStringTokenIndex();
215             ExcelColumnMap2DAO localHorizontalExcelColumnMap2DAO = passedAllHorizontalMap2DAO_ArrayList.get(index);
216             ExcelColumnMap2DAO localVerticalExcelColumnMap2DAO = passedAllVerticalMap2DAO_ArrayList.get(index);
217             tempJavaCodeGeneratorDAO.setFieldNameString(variableName_Number); 
218             int result = getDataType(localVerticalExcelColumnMap2DAO, tempJavaCodeGeneratorDAO );
219             // pass data type to set maker and get maker methods
220             classJavaCodeGeneratorDAOArrayList.add(tempJavaCodeGeneratorDAO);           
221         }
222        int result = createAllSetGetMehtods(classJavaCodeGeneratorDAOArrayList);
223     
224         return(MainConstants.SUCCESS);        
225     }
226     /*
227     int getDataType
228     */
229     int getDataType(ExcelColumnMap2DAO passedExcelColumnMap2DAO, 
230             JavaCodeGeneratorDAO passedJavaCodeGeneratorDAO){
231         
232         int dataTypeCount = 0;
233         int dataTypeValue = ExcelDAO_Constants.NUMERIC_DOUBLE_INDEX;
234         String typeString = "";
235         String commentString = "";
236         
237         dataTypeCount = passedExcelColumnMap2DAO.getNumericCount();
238         commentString = "// Numeric cell";
239         typeString = "double";
240         if(dataTypeCount < passedExcelColumnMap2DAO.getLabelCount()){
241             dataTypeCount = passedExcelColumnMap2DAO.getBlankCount();
242             commentString = "// Label cell";           
243             dataTypeValue = ExcelDAO_Constants.STRING_LABEL_INDEX;
244             typeString = "String";
245         }
246         if(dataTypeCount < passedExcelColumnMap2DAO.getKnownheaderCount()){
247             dataTypeCount = passedExcelColumnMap2DAO.getKnownheaderCount();
248             commentString = "// Known header cell";           
249             dataTypeValue = ExcelDAO_Constants.STRING_LABEL_INDEX;
250             typeString = "String";
251         }
252         if(dataTypeCount < passedExcelColumnMap2DAO.getBooleanCount()){
253             dataTypeCount = passedExcelColumnMap2DAO.getBooleanCount();
254             commentString = "// boolean cell";           
255             dataTypeValue = ExcelDAO_Constants.BOOLEAN_EVALUATION_INDEX;
256             typeString = "boolean";
257         }
258         if(dataTypeCount < passedExcelColumnMap2DAO.getFormulaCount()){
259             dataTypeCount = passedExcelColumnMap2DAO.getFormulaCount();
260             commentString = "// Forumla cell";           
261             dataTypeValue = ExcelDAO_Constants.EXCEL_CELL_TYPE_FORMULA;
262             typeString = "// formula";
263         }
264         if(dataTypeCount < passedExcelColumnMap2DAO.getFormulaSumCount()){
265             dataTypeCount = passedExcelColumnMap2DAO.getFormulaSumCount();
266             commentString = "// Formula Sum cell";           
267             dataTypeValue = ExcelDAO_Constants.FORMULA_SUM_COLUMN_CELLS_INDEX;
268             typeString = "// formula Sum";
269         }
270         if(dataTypeCount < passedExcelColumnMap2DAO.getFormulaMultiplicationCount()){
271             dataTypeCount = passedExcelColumnMap2DAO.getFormulaMultiplicationCount();
272             commentString = "// Formula Multiplication cell";           
273             dataTypeValue = ExcelDAO_Constants.FORMULA_MULTIPLICATION_CELLS_INDEX;
274             typeString = "// formula MULTIPLICATION";
275         }
276         if(dataTypeCount < passedExcelColumnMap2DAO.getFormulaComplexCount()){
277             dataTypeCount = passedExcelColumnMap2DAO.getFormulaComplexCount();
278             commentString = "// Formula Complex cell";           
279             dataTypeValue = ExcelDAO_Constants.FORMULA_COMPLEX_CELLS_INDEX;
280             typeString = "// formula complex";
281         }
282         if(dataTypeCount < passedExcelColumnMap2DAO.getCommentCount()){
283             dataTypeCount = passedExcelColumnMap2DAO.getCommentCount();
284             commentString = "// comment cell";           
285             dataTypeValue = ExcelDAO_Constants.STRING_COMMENT_INDEX;
286             typeString = "// comment";
287         }
288         if(dataTypeCount < passedExcelColumnMap2DAO.getErrorCount()){
289             dataTypeCount = passedExcelColumnMap2DAO.getErrorCount();
290             commentString = "// Error cell";           
291             dataTypeValue = ExcelDAO_Constants.EXCEL_CELL_TYPE_ERROR;
292             typeString = "// Error";
293         }
294         if(dataTypeCount < passedExcelColumnMap2DAO.getBlankCount()){
295             dataTypeCount = passedExcelColumnMap2DAO.getBlankCount();
296             commentString = "// Blank cell";           
297             dataTypeValue = ExcelDAO_Constants.EXCEL_CELL_TYPE_BLANK;
298             typeString = "// blank";
299         }
300         if(dataTypeCount < passedExcelColumnMap2DAO.getUnknownheaderCount()){
301             dataTypeCount = passedExcelColumnMap2DAO.getUnknownheaderCount();
302             commentString = "// unknownheaderCount cell";           
303             dataTypeValue = ExcelDAO_Constants.STRING_UNKNOWN_HEADER_INDEX;
304             typeString = "String";
305         }
306         if(dataTypeCount < passedExcelColumnMap2DAO.getMiscCount()){
307             dataTypeCount = passedExcelColumnMap2DAO.getMiscCount();
308             commentString = "// Misc cell";           
309             dataTypeValue = ExcelDAO_Constants.EXCEL_CELL_TYPE_ERROR;
310             typeString = "// Error";
311         }
312         double d_totalCount = (double)passedExcelColumnMap2DAO.getTotalCount();
313         double tempDouble = (double)dataTypeCount;
314         int percentageOfAccuracy = (int)((tempDouble / d_totalCount ) * 100);
315         passedJavaCodeGeneratorDAO.setSuccessPercentageString(" success = " + percentageOfAccuracy + "%"); 
316         passedJavaCodeGeneratorDAO.setDataTypeString(typeString); 
317         passedJavaCodeGeneratorDAO.setCommentsString(commentString); 
318         passedJavaCodeGeneratorDAO.setDataTypeValue(dataTypeValue);         
319         return(MainConstants.SUCCESS);        
320     }
321     /*
322        
323     */
324     int createAllSetGetMehtods(ArrayList<JavaCodeGeneratorDAO> passedJavaCodeGeneratorDAOArrayList) {
325 
326         if(null == passedJavaCodeGeneratorDAOArrayList){
327             System.out.println("passedJavaCodeGeneratorDAOArrayList is null ");
328             return(MainConstants.FAILED);        
329         }
330         if(passedJavaCodeGeneratorDAOArrayList.size() <= 0){
331             System.out.println("passedJavaCodeGeneratorDAOArrayList size is zero ");
332             return(MainConstants.FAILED);        
333         }
334         
335         int index = 0;
336         for(index = 0; index < passedJavaCodeGeneratorDAOArrayList.size();index++){
337             
338             JavaCodeGeneratorDAO localJavaCodeGeneratorDAO = passedJavaCodeGeneratorDAOArrayList.get(index);
339             String variableString = localJavaCodeGeneratorDAO.getFieldNameString();
340             String firstCharCapVariable =  variableString.substring(0, 1).toUpperCase() + variableString.substring(1);
341             String getMethodString =
342                         "public "
343                     +   localJavaCodeGeneratorDAO.getDataTypeString()
344                     +   "  get"
345                     +   firstCharCapVariable
346                     +   "() { "
347                     +   newLine
348                     +   "return("
349                     +   variableString
350                     +   ");"
351                     +   newLine
352                     +   "}";
353             localJavaCodeGeneratorDAO.setGetMethodString(getMethodString); 
354 
355             String setMethodString =
356                         "public  void  "
357                     +   "  set"
358                     +   firstCharCapVariable
359                     +   "("
360                     +   localJavaCodeGeneratorDAO.getDataTypeString()
361                     +   "   "
362                     +   variableString
363                     +   ")"
364                     +   " { "
365                     +   newLine
366                     +   "this."
367                     +   variableString
368                     +   " =  "
369                     +   variableString
370                     +   ";"
371                     +   newLine
372                     +   "}";
373             localJavaCodeGeneratorDAO.setSetMethodString(setMethodString); 
374         }                    
375         return(MainConstants.SUCCESS);        
376     }
377     /*
378        
379     */
380     public static void main(String[] args){
381 
382         Excel2DAO_Mapper localExcel2DAO_Mapper = new Excel2DAO_Mapper();
383         ArrayList <OneRow_ExcelCells> localAllRows = localExcel2DAO_Mapper.getAllSheetRows();
384         if(null == localAllRows){
385            System.out.print("rows arrayList  is null ");
386            return;
387         }
388         LoadTokenValueArrayList tempLoadTokenValueArrayList = new LoadTokenValueArrayList();
389         ArrayList <TokenValueDAO> localTokenValueDAOArrayList = tempLoadTokenValueArrayList.getTokenValueArrayList();
390         if(null == localTokenValueDAOArrayList){
391            System.out.print("localTokenValueDAOArrayList  is null ");
392            return;
393         }        
394         int rowNumber = 0;
395         for(rowNumber = 0; rowNumber < localAllRows.size(); rowNumber++){
396             // loop throw the rows and parse each row
397             OneRow_ExcelCells localOneRow_ExcelCells = localAllRows.get(rowNumber);
398             RowCellParserUsingBusinessRule_1 localRowCellParserUsingBusinessRule_1 = 
399                                 new RowCellParserUsingBusinessRule_1(localOneRow_ExcelCells, localTokenValueDAOArrayList);
400         }   
401         int stopDebugger = 0;
402         
403     }
404             
405 }
406