001package com.thed.zblast.util;
002
003import com.google.gson.Gson;
004import com.google.gson.GsonBuilder;
005import com.google.gson.JsonParseException;
006import com.thed.model.AutomationJobDetail;
007import com.thed.model.ZblastScriptExecutionResult;
008
009import java.io.*;
010import java.util.ArrayList;
011import java.util.List;
012import java.util.logging.Logger;
013
014public class ZblastErrorLogManager {
015
016    private static final String ZAUTOMATION_JSON = "Zautomation.json";
017    private static Logger logger = Logger.getLogger(ZblastErrorLogManager.class.getName());
018
019    public static void main(String[] args) {
020
021        saveLogs(new AutomationJobDetail(), new ZblastScriptExecutionResult(), ZblastErrorType.SUCCESS_ZEE_UNAVAILABLE);
022
023        processPendingJobs(checkForPendingJobs());
024    }
025
026    private static void processPendingJobs(ZautomationTaskLog checkForPendingJobs) {
027
028        List<ZautomationTask> resultParsingError = checkForPendingJobs.getResultParsingError();
029        List<ZautomationTask> resultParsingErrZeeUnavailable = checkForPendingJobs.getResultParsingErrZeeUnavailable();
030        List<ZautomationTask> scriptError = checkForPendingJobs.getScriptError();
031        List<ZautomationTask> scriptErrorZeeUnavailable = checkForPendingJobs.getScriptErrorZeeUnavailable();
032        List<ZautomationTask> successZeeUnavailable = checkForPendingJobs.getSuccessZeeUnavailable();
033
034        if (resultParsingError != null && resultParsingError.size() != 0) {
035            processResultParsingErrorJobs(resultParsingError);
036        }
037
038        if (resultParsingErrZeeUnavailable != null && resultParsingErrZeeUnavailable.size() != 0) {
039            processResultParsingErrZeeUnavailableJobs(resultParsingErrZeeUnavailable);
040        }
041        if (scriptError != null && scriptError.size() != 0) {
042            processScriptErrorJobs(scriptError);
043        }
044        if (scriptErrorZeeUnavailable != null && scriptErrorZeeUnavailable.size() != 0) {
045            processScriptErrorZeeUnavailableJobs(scriptErrorZeeUnavailable);
046        }
047        if (successZeeUnavailable != null && successZeeUnavailable.size() != 0) {
048            processSuccessZeeUnavailableJobs(successZeeUnavailable);
049        }
050
051    }
052
053    private static void processSuccessZeeUnavailableJobs(List<ZautomationTask> successZeeUnavailable) {
054        // TODO Auto-generated method stub
055
056    }
057
058    private static void processScriptErrorZeeUnavailableJobs(List<ZautomationTask> scriptErrorZeeUnavailable) {
059        // TODO Auto-generated method stub
060
061    }
062
063    private static void processScriptErrorJobs(List<ZautomationTask> scriptError) {
064        // TODO Auto-generated method stub
065
066    }
067
068    private static void processResultParsingErrZeeUnavailableJobs(List<ZautomationTask> resultParsingErrZeeUnavailable) {
069        // TODO Auto-generated method stub
070
071    }
072
073    private static void processResultParsingErrorJobs(List<ZautomationTask> resultParsingError) {
074        // TODO Auto-generated method stub
075
076    }
077
078    private static void saveLogs(AutomationJobDetail automationJobDetail, ZblastScriptExecutionResult executionResult, ZblastErrorType zblastErrorType) {
079        ZautomationTaskLog log = null;
080        try {
081            log = retrieveErrorLog();
082
083                switch (zblastErrorType) {
084                        case RESULT_PARSING_ERROR: {
085                                List<ZautomationTask> resultParsingError = log.getResultParsingError() == null ? new ArrayList<ZautomationTask>() : log.getResultParsingError();
086                                resultParsingError.add(new ZautomationTask(automationJobDetail, executionResult));
087                                log.setResultParsingError(resultParsingError);
088                                break;
089                        }
090                        case RESULT_PARSINGERR_ZEE_UNAVAILABLE: {
091                                List<ZautomationTask> resultParsingErrZeeUnavailable = log.getResultParsingErrZeeUnavailable() == null ? new ArrayList<ZautomationTask>() : log.getResultParsingErrZeeUnavailable();
092                                resultParsingErrZeeUnavailable.add(new ZautomationTask(automationJobDetail, executionResult));
093                                log.setResultParsingErrZeeUnavailable(resultParsingErrZeeUnavailable);
094                                break;
095                        }
096                        case SCRIPT_ERROR: {
097                                List<ZautomationTask> scriptError = log.getScriptError() == null ? new ArrayList<ZautomationTask>() : log.getScriptError();
098                                scriptError.add(new ZautomationTask(automationJobDetail, executionResult));
099                                log.setScriptError(scriptError);
100                                break;
101                        }
102                        case SCRIPT_ERROR_ZEE_UNAVAILABLE: {
103                                List<ZautomationTask> scriptErrorZeeUnavailable = log.getScriptErrorZeeUnavailable() == null ? new ArrayList<ZautomationTask>() : log.getScriptErrorZeeUnavailable();
104                                scriptErrorZeeUnavailable.add(new ZautomationTask(automationJobDetail, executionResult));
105                                log.setScriptErrorZeeUnavailable(scriptErrorZeeUnavailable);
106                                break;
107                        }
108                        case SUCCESS_ZEE_UNAVAILABLE: {
109                                List<ZautomationTask> successZeeUnavailable = log.getSuccessZeeUnavailable() == null ? new ArrayList<ZautomationTask>() : log.getSuccessZeeUnavailable();
110                                successZeeUnavailable.add(new ZautomationTask(automationJobDetail, executionResult));
111                                log.setSuccessZeeUnavailable(successZeeUnavailable);
112                                break;
113                        }
114                        default:
115                                break;
116                }
117        } catch (Exception e) {
118            logger.info("Error Saving Zblast error log : " + e.getMessage());
119        }
120
121        saveZblastErrorlog(log);
122    }
123
124    private static void saveZblastErrorlog(ZautomationTaskLog log) {
125        try (Writer writer = new FileWriter(ZAUTOMATION_JSON)) {
126            new GsonBuilder().create().toJson(log, writer);
127        } catch (IOException e) {
128            e.printStackTrace();
129        }
130    }
131
132    private static ZautomationTaskLog retrieveErrorLog() {
133        ZautomationTaskLog log = null;
134
135        File zAutoLog = new File(ZAUTOMATION_JSON);
136
137        if (zAutoLog.exists()) {
138            try {
139                log = new GsonBuilder().create().fromJson(new FileReader(ZAUTOMATION_JSON), ZautomationTaskLog.class);
140            } catch (FileNotFoundException e1) {
141                e1.printStackTrace();
142            } catch (JsonParseException e) {
143                e.printStackTrace();
144            } catch (Exception e) {
145                e.printStackTrace();
146            }
147        }
148
149        if (log == null)
150            log = new ZautomationTaskLog();
151        return log;
152    }
153
154    public static ZautomationTaskLog checkForPendingJobs() {
155        ZautomationTaskLog log = null;
156        try {
157
158            if (!new File(ZAUTOMATION_JSON).exists())
159                return null;
160
161            Gson gson = new GsonBuilder().create();
162            log = gson.fromJson(new FileReader(ZAUTOMATION_JSON), ZautomationTaskLog.class);
163
164            if (!checkIfErrorExists(log))
165                return null;
166
167        } catch (JsonParseException e1) {
168            e1.printStackTrace();
169        } catch (FileNotFoundException e1) {
170            e1.printStackTrace();
171        }
172        return log;
173
174    }
175
176    private static boolean checkIfErrorExists(ZautomationTaskLog log) {
177        return log != null && ((log.getResultParsingError() != null && log.getResultParsingError().size() != 0) || (log.getResultParsingErrZeeUnavailable() != null && log.getResultParsingErrZeeUnavailable().size() != 0) || (log.getScriptError() != null && log.getScriptError().size() != 0) || (log.getScriptErrorZeeUnavailable() != null && log.getScriptErrorZeeUnavailable().size() != 0) || (log.getSuccessZeeUnavailable() != null && log.getSuccessZeeUnavailable().size() != 0));
178    }
179}