Fix NPE issue in epsdk-analytics 90/96490/1
authorParshad Patel <pars.patel@samsung.com>
Wed, 2 Oct 2019 02:25:24 +0000 (11:25 +0900)
committerParshad Patel <pars.patel@samsung.com>
Wed, 2 Oct 2019 02:25:31 +0000 (11:25 +0900)
Fix A "NullPointerException" could be thrown
Either log or rethrow this exception
Define a constant instead of duplicating this literal
Replace the type specification in this constructor call with the diamond operator ("<>")

Issue-ID: PORTAL-562
Change-Id: I51a8bb0feec5b63f82b19097d62a4977a020fdfe
Signed-off-by: Parshad Patel <pars.patel@samsung.com>
ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/search/ReportSearchResultJSON.java
ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/search/SearchResult.java
ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorController.java

index 39b9707..c3fc0a7 100644 (file)
@@ -33,7 +33,7 @@
  *
  * ============LICENSE_END============================================
  *
- * 
+ *
  */
 package org.onap.portalsdk.analytics.model.search;
 
@@ -43,227 +43,263 @@ import javax.servlet.http.HttpServletRequest;
 
 import org.onap.portalsdk.analytics.error.RaptorException;
 import org.onap.portalsdk.analytics.system.AppUtils;
+import org.onap.portalsdk.analytics.system.DbUtils;
 import org.onap.portalsdk.analytics.system.Globals;
 import org.onap.portalsdk.analytics.util.AppConstants;
 import org.onap.portalsdk.analytics.util.DataSet;
-
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-class MetaReport { 
-       private boolean pagination = true;
-       private int pageSize;
-       private int totalSize;
-       private int pageNo;
-       public boolean isPagination() {
-               return pagination;
-       }
-       public void setPagination(boolean pagination) {
-               this.pagination = pagination;
-       }
-       public int getPageSize() {
-               return pageSize;
-       }
-       public void setPageSize(int pageSize) {
-               this.pageSize = pageSize;
-       }
-       public int getTotalSize() {
-               return totalSize;
-       }
-       public void setTotalSize(int totalSize) {
-               this.totalSize = totalSize;
-       }
-       public int getPageNo() {
-               return pageNo;
-       }
-       public void setPageNo(int pageNo) {
-               this.pageNo = pageNo;
-       }
-       
-       
+class MetaReport {
+    private boolean pagination = true;
+    private int pageSize;
+    private int totalSize;
+    private int pageNo;
+
+    public boolean isPagination() {
+        return pagination;
+    }
+
+    public void setPagination(boolean pagination) {
+        this.pagination = pagination;
+    }
+
+    public int getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(int pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public int getTotalSize() {
+        return totalSize;
+    }
+
+    public void setTotalSize(int totalSize) {
+        this.totalSize = totalSize;
+    }
+
+    public int getPageNo() {
+        return pageNo;
+    }
+
+    public void setPageNo(int pageNo) {
+        this.pageNo = pageNo;
+    }
+
 }
+
+
 class SearchReport {
-       private MetaReport metaReport;
-       public MetaReport getMetaReport() {
-               return metaReport;
-       }
-       public void setMetaReport(MetaReport metaReport) {
-               this.metaReport = metaReport;
-       }
-       private ArrayList<ArrayList<SearchResultColumn>> columns = new ArrayList<ArrayList<SearchResultColumn>>();
-       private ArrayList<ArrayList<SearchResultRow>> rows = new ArrayList<ArrayList<SearchResultRow>>();
-       public ArrayList<ArrayList<SearchResultColumn>> getColumns() {
-               return columns;
-       }
-       public void setColumns(ArrayList<ArrayList<SearchResultColumn>> columns) {
-               this.columns = columns;
-       }
-       public ArrayList<ArrayList<SearchResultRow>> getRows() {
-               return rows;
-       }
-       public void setRows(ArrayList<ArrayList<SearchResultRow>> rows) {
-               this.rows = rows;
-       }
-       
+    private MetaReport metaReport;
+
+    public MetaReport getMetaReport() {
+        return metaReport;
+    }
+
+    public void setMetaReport(MetaReport metaReport) {
+        this.metaReport = metaReport;
+    }
+
+    private ArrayList<ArrayList<SearchResultColumn>> columns = new ArrayList<>();
+    private ArrayList<ArrayList<SearchResultRow>> rows = new ArrayList<>();
+
+    public ArrayList<ArrayList<SearchResultColumn>> getColumns() {
+        return columns;
+    }
+
+    public void setColumns(ArrayList<ArrayList<SearchResultColumn>> columns) {
+        this.columns = columns;
+    }
+
+    public ArrayList<ArrayList<SearchResultRow>> getRows() {
+        return rows;
+    }
+
+    public void setRows(ArrayList<ArrayList<SearchResultRow>> rows) {
+        this.rows = rows;
+    }
+
 }
 
+
 public class ReportSearchResultJSON extends SearchResultJSON {
-       private static final String HTML_FORM = "forma";
-       private String JSONString= "";
-       private SearchReport searchReport;
-       //private ArrayList<ArrayList<SearchResultColumn>> columns = new ArrayList<ArrayList<SearchResultColumn>>();
-       //private ArrayList<ArrayList<SearchResultRow>> rows = new ArrayList<ArrayList<SearchResultRow>>();
-
-       
-       public ReportSearchResultJSON(int pageNo) {
-               this(pageNo, Globals.getDefaultPageSize(), -1, -1);
-       } // ReportSearchResult
-
-       public ReportSearchResultJSON(int pageNo, int writeAccessColIndex, int ownerIndicatorColIndex) {
-               this(pageNo, Globals.getDefaultPageSize(), writeAccessColIndex, ownerIndicatorColIndex);
-       } // ReportSearchResult
-
-       public ReportSearchResultJSON(int pageNo, int pageSize, int writeAccessColIndex,
-                       int ownerIndicatorColIndex) { 
-
-               searchReport = new SearchReport();
-               MetaReport metaReport = new MetaReport();
-               //if(searchReport.getMetaReport()!=null)
-                       searchReport.setMetaReport(metaReport); 
-               metaReport.setPageNo(pageNo);
-               metaReport.setPageSize(pageSize); 
-               metaReport.setPagination(true);
-               addColumn(new SearchResultColumn("no", "No", "5%", "Center"));
-               addColumn(new SearchResultColumn("rep_id", "Report ID", "5%", "Center"));
-               addColumn(new SearchResultColumn("rep_name", "Report Name", "25%", "Left"));
-               addColumn(new SearchResultColumn("descr", "Description", "30%", "Left"));
-               addColumn(new SearchResultColumn("owner", "Report Owner", "10%", "Center"));
-               addColumn(new SearchResultColumn("create_date", "Create Date", "10%", "Center"));
-               addColumn(new SearchResultColumn("copy", "Copy", "5%", "Center",
-                               "document." + HTML_FORM + "." + AppConstants.RI_ACTION
-                                               + ".value='report.copy';", "Copy report", HTML_FORM,
-                               "Are you sure you want to create a copy of this report?", AppUtils
-                                               .getImgFolderURL()
-                                               + "modify_icon.gif", "13", "12", true, false, false));
-               /*addColumn(new SearchResultColumn("&nbsp;&nbsp;Schedule&nbsp;&nbsp;", "5%", "Center",
-                               "document." + HTML_FORM + "." + AppConstants.RI_ACTION
-                                               + ".value='report.schedule_only';", "Schedule report", HTML_FORM,
-                               null, AppUtils
-                                               .getImgFolderURL()
-                                               + "calendar_icon.gif", "13", "12", true, false, false));
-                                               */
-
-               addColumn(new SearchResultColumn("edit", "Edit", "5%", "Center",
-                               "document." + HTML_FORM + "." + AppConstants.RI_ACTION
-                                               + ".value='report.edit';", "Edit report", HTML_FORM, null, AppUtils
-                                               .getImgFolderURL()
-                                               + "pen_paper.gif", "12", "12", false, true, false));
-               addColumn(new SearchResultColumn("delete", "Delete", "5%", "Center", "document." + HTML_FORM
-                               + "." + AppConstants.RI_ACTION + ".value='report.delete';", "Delete report",
-                               HTML_FORM, "Are you sure you want to delete this report?", AppUtils
-                                               .getImgFolderURL()
-                                               + "deleteicon.gif", "12", "12", false, false, true));
-               addColumn(new SearchResultColumn("schedule", "Schedule", "5%", "Center", "document." + HTML_FORM
-                               + "." + AppConstants.RI_ACTION + ".value='report.schedule.report.submit_wmenu';", "Schedule report",
-                               HTML_FORM, null, AppUtils
-                                               .getImgFolderURL()
-                                               + "calendar_icon.gif", "20", "20", false, false, false, true));
-               addColumn(new SearchResultColumn("run", "Run", "5%", "Center",
-                               "document." + HTML_FORM + "." + AppConstants.RI_ACTION
-                                               + ".value='report.run';", "Run report", HTML_FORM, null, AppUtils
-                                               .getImgFolderURL()
-                                               + "test_run.gif", "12", "12"));
-               searchReport.getColumns().add(searchResultColumns);
-       } // ReportSearchResult
-
-       public void parseData(DataSet ds, HttpServletRequest request, int pageNo, int pageSize, int writeAccessColIndex, int ownerIndicatorColIndex) throws RaptorException {
-               // Presumes single ID field in the first column of the DataSet and row
-               // number in the first SearchResultColumn
-
-               pageNo = AppUtils.getRequestNvlValue(request, "r_page").length()>0?Integer.parseInt(AppUtils.getRequestNvlValue(request, "r_page")):0;
-               String userID = AppUtils.getUserID(request);
-               int dataSize = ds.getRowCount();
-               //pageSize = 0;
-
-               if(searchReport.getMetaReport()!=null) {
-                       searchReport.getMetaReport().setPageNo(pageNo);
-                       //searchReport.getMetaReport().setPageSize(pageSize);
-                       pageSize = searchReport.getMetaReport().getPageSize();
-                       searchReport.getMetaReport().setTotalSize(dataSize);
-               }
-               int startRow = (pageNo >= 0) ? (pageNo * pageSize) : 0;
-               int endRow = (pageNo >= 0) ? Math.min(startRow + pageSize, ds.getRowCount()) : ds
-                               .getRowCount();
-               for (int r = startRow; r < endRow; r++) {
-                       SearchResultRow row = new SearchResultRow();
-                       searchResultRows.add(row);
-
-                       String idValue = ds.getString(r, 0);
-
-                       boolean bCanEdit = true;
-                       if (writeAccessColIndex >= 0) {
-                               String isReadOnlyValue = nvl(ds.getString(r, writeAccessColIndex), "Y");
-                               bCanEdit = AppUtils.isSuperUser(request) || AppUtils.isAdminUser(request)
-                                               || isReadOnlyValue.equals("N");
-                       }
-
-                       boolean bCanDelete = bCanEdit;
-                       if (Globals.getDeleteOnlyByOwner() && ownerIndicatorColIndex >= 0) {
-                               String isOwnedByUserRecord = nvl(ds.getString(r, ownerIndicatorColIndex), "N");
-                               bCanDelete = AppUtils.isSuperUser(request) || isOwnedByUserRecord.equals("Y");
-                       }
-                       
-                       boolean bCanSchedule = ds.getString(r, getNumColumns()-3).equals("Y");
-
-                       row.addColumnContent(new ColumnContent(getColumn(0).getColumnId(), new SearchResultField("" + (r + 1), idValue,
-                                       getColumn(0), true)));
-                       boolean isAuthorized = true;
-                       for (int c = 1; c < getNumColumns(); c++) {
-                               SearchResultColumn column = getColumn(c);
-                               isAuthorized = true;
-
-                               if(column.isCopyLink()) 
-                                       isAuthorized = Globals.getCanCopyOnReadOnly()? true:bCanEdit;
-                               else if (column.isDeleteLink())
-                                       isAuthorized = bCanDelete;
-                               else if (column.isEditLink())
-                                       isAuthorized = bCanEdit;
-                               else if (column.isScheduleLink())
-                                       isAuthorized = bCanSchedule;
+
+    private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ReportSearchResultJSON.class);
+    private static final String HTML_FORM = "forma";
+    private String jsonString = "";
+    private SearchReport searchReport;
+    // private ArrayList<ArrayList<SearchResultColumn>> columns = new
+    // ArrayList<ArrayList<SearchResultColumn>>();
+    // private ArrayList<ArrayList<SearchResultRow>> rows = new ArrayList<ArrayList<SearchResultRow>>();
+
+    public ReportSearchResultJSON(int pageNo) {
+        this(pageNo, Globals.getDefaultPageSize(), -1, -1);
+    } // ReportSearchResult
+
+    public ReportSearchResultJSON(int pageNo, int writeAccessColIndex, int ownerIndicatorColIndex) {
+        this(pageNo, Globals.getDefaultPageSize(), writeAccessColIndex, ownerIndicatorColIndex);
+    } // ReportSearchResult
+
+    public ReportSearchResultJSON(int pageNo, int pageSize, int writeAccessColIndex,
+            int ownerIndicatorColIndex) {
+
+        searchReport = new SearchReport();
+        MetaReport metaReport = new MetaReport();
+        // if(searchReport.getMetaReport()!=null)
+        searchReport.setMetaReport(metaReport);
+        metaReport.setPageNo(pageNo);
+        metaReport.setPageSize(pageSize);
+        metaReport.setPagination(true);
+        addColumn(new SearchResultColumn("no", "No", "5%", "Center"));
+        addColumn(new SearchResultColumn("rep_id", "Report ID", "5%", "Center"));
+        addColumn(new SearchResultColumn("rep_name", "Report Name", "25%", "Left"));
+        addColumn(new SearchResultColumn("descr", "Description", "30%", "Left"));
+        addColumn(new SearchResultColumn("owner", "Report Owner", "10%", "Center"));
+        addColumn(new SearchResultColumn("create_date", "Create Date", "10%", "Center"));
+        addColumn(new SearchResultColumn("copy", "Copy", "5%", "Center",
+                "document." + HTML_FORM + "." + AppConstants.RI_ACTION
+                        + ".value='report.copy';",
+                "Copy report", HTML_FORM,
+                "Are you sure you want to create a copy of this report?", AppUtils
+                        .getImgFolderURL()
+                        + "modify_icon.gif",
+                "13", "12", true, false, false));
+        /*
+         * addColumn(new SearchResultColumn("&nbsp;&nbsp;Schedule&nbsp;&nbsp;", "5%", "Center", "document."
+         * + HTML_FORM + "." + AppConstants.RI_ACTION + ".value='report.schedule_only';", "Schedule report",
+         * HTML_FORM, null, AppUtils .getImgFolderURL() + "calendar_icon.gif", "13", "12", true, false,
+         * false));
+         */
+
+        addColumn(new SearchResultColumn("edit", "Edit", "5%", "Center",
+                "document." + HTML_FORM + "." + AppConstants.RI_ACTION
+                        + ".value='report.edit';",
+                "Edit report", HTML_FORM, null, AppUtils
+                        .getImgFolderURL()
+                        + "pen_paper.gif",
+                "12", "12", false, true, false));
+        addColumn(new SearchResultColumn("delete", "Delete", "5%", "Center", "document." + HTML_FORM
+                + "." + AppConstants.RI_ACTION + ".value='report.delete';", "Delete report",
+                HTML_FORM, "Are you sure you want to delete this report?", AppUtils
+                        .getImgFolderURL()
+                        + "deleteicon.gif",
+                "12", "12", false, false, true));
+        addColumn(new SearchResultColumn("schedule", "Schedule", "5%", "Center", "document." + HTML_FORM
+                + "." + AppConstants.RI_ACTION + ".value='report.schedule.report.submit_wmenu';", "Schedule report",
+                HTML_FORM, null, AppUtils
+                        .getImgFolderURL()
+                        + "calendar_icon.gif",
+                "20", "20", false, false, false, true));
+        addColumn(new SearchResultColumn("run", "Run", "5%", "Center",
+                "document." + HTML_FORM + "." + AppConstants.RI_ACTION
+                        + ".value='report.run';",
+                "Run report", HTML_FORM, null, AppUtils
+                        .getImgFolderURL()
+                        + "test_run.gif",
+                "12", "12"));
+        searchReport.getColumns().add(searchResultColumns);
+    } // ReportSearchResult
+
+    public void parseData(DataSet ds, HttpServletRequest request, int pageNo, int pageSize, int writeAccessColIndex,
+            int ownerIndicatorColIndex) throws RaptorException {
+        // Presumes single ID field in the first column of the DataSet and row
+        // number in the first SearchResultColumn
+
+        pageNo = AppUtils.getRequestNvlValue(request, "r_page").length() > 0
+                ? Integer.parseInt(AppUtils.getRequestNvlValue(request, "r_page"))
+                : 0;
+        String userID = AppUtils.getUserID(request);
+        int dataSize = ds.getRowCount();
+        // pageSize = 0;
+
+        if (searchReport.getMetaReport() != null) {
+            searchReport.getMetaReport().setPageNo(pageNo);
+            // searchReport.getMetaReport().setPageSize(pageSize);
+            pageSize = searchReport.getMetaReport().getPageSize();
+            searchReport.getMetaReport().setTotalSize(dataSize);
+        }
+        int startRow = (pageNo >= 0) ? (pageNo * pageSize) : 0;
+        int endRow = (pageNo >= 0) ? Math.min(startRow + pageSize, ds.getRowCount())
+                : ds
+                        .getRowCount();
+        for (int r = startRow; r < endRow; r++) {
+            SearchResultRow row = new SearchResultRow();
+            searchResultRows.add(row);
+
+            String idValue = ds.getString(r, 0);
+
+            boolean bCanEdit = true;
+            if (writeAccessColIndex >= 0) {
+                String isReadOnlyValue = nvl(ds.getString(r, writeAccessColIndex), "Y");
+                bCanEdit = AppUtils.isSuperUser(request) || AppUtils.isAdminUser(request);
+                if (isReadOnlyValue != null) {
+                    bCanEdit = bCanEdit || isReadOnlyValue.equals("N");
+                }
+
+            }
+
+            boolean bCanDelete = bCanEdit;
+            if (Globals.getDeleteOnlyByOwner() && ownerIndicatorColIndex >= 0) {
+                String isOwnedByUserRecord = nvl(ds.getString(r, ownerIndicatorColIndex), "N");
+                bCanDelete = AppUtils.isSuperUser(request);
+                if (isOwnedByUserRecord != null) {
+                    bCanDelete = bCanDelete || isOwnedByUserRecord.equals("Y");
+                }
+            }
+
+            boolean bCanSchedule = ds.getString(r, getNumColumns() - 3).equals("Y");
+
+            row.addColumnContent(
+                    new ColumnContent(getColumn(0).getColumnId(), new SearchResultField("" + (r + 1), idValue,
+                            getColumn(0), true)));
+            boolean isAuthorized = true;
+            for (int c = 1; c < getNumColumns(); c++) {
+                SearchResultColumn column = getColumn(c);
+                isAuthorized = true;
+
+                if (column.isCopyLink())
+                    isAuthorized = Globals.getCanCopyOnReadOnly() ? true : bCanEdit;
+                else if (column.isDeleteLink())
+                    isAuthorized = bCanDelete;
+                else if (column.isEditLink())
+                    isAuthorized = bCanEdit;
+                else if (column.isScheduleLink())
+                    isAuthorized = bCanSchedule;
                 row.addColumnContent(new ColumnContent(column.getColumnId(), new SearchResultField(
-                                               (column.getLinkURL() == null) ? ds.getString(r, c) : column
-                                                               .getLinkTitle(), idValue,  column, isAuthorized
-                                               )));
-                       } // for
-               } // for
-               searchReport.getRows().add(searchResultRows);
-               ObjectMapper mapper = new ObjectMapper();
-               String jsonInString = "";
-               try {
-                       jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(searchReport);
-               } catch (Exception ex) {
-                       ex.printStackTrace();
-                       
-               }
-               System.out.println(jsonInString);
-               this.JSONString = jsonInString;
-       } // parseData
-
-       private String nvl(String s) {
-               return (s == null) ? "" : s;
-       }
-       
-       private String nvl(String s, String sDefault) {
-               return nvl(s).equals("") ? sDefault : s;
-       }
-
-       public String getJSONString() {
-               return JSONString;
-       }
-
-       public void setJSONString(String jSONString) {
-               JSONString = jSONString;
-       }
-       
-       
-} // ReportSearchResult
+                        (column.getLinkURL() == null) ? ds.getString(r, c)
+                                : column
+                                        .getLinkTitle(),
+                        idValue, column, isAuthorized)));
+            } // for
+        } // for
+        searchReport.getRows().add(searchResultRows);
+        ObjectMapper mapper = new ObjectMapper();
+        String jsonInString = "";
+        try {
+            jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(searchReport);
+        } catch (Exception ex) {
+            logger.warn("Exception in parseData", ex);
+        }
+        logger.debug(jsonInString);
+        this.jsonString = jsonInString;
+    } // parseData
 
+    private String nvl(String s) {
+        return (s == null) ? "" : s;
+    }
+
+    private String nvl(String s, String sDefault) {
+        return nvl(s).equals("") ? sDefault : s;
+    }
+
+    public String getJSONString() {
+        return jsonString;
+    }
+
+    public void setJSONString(String jSONString) {
+        jsonString = jSONString;
+    }
+
+} // ReportSearchResult
index 056ab5b..5b44681 100644 (file)
@@ -33,7 +33,7 @@
  *
  * ============LICENSE_END============================================
  *
- * 
+ *
  */
 package org.onap.portalsdk.analytics.model.search;
 
@@ -46,186 +46,187 @@ import org.onap.portalsdk.analytics.system.AppUtils;
 import org.onap.portalsdk.analytics.system.Globals;
 import org.onap.portalsdk.analytics.util.DataSet;
 
-public class SearchResult{
-       private int pageNo = -1;
-
-       private int pageSize = 50;
-
-       private int dataSize = -1;
+public class SearchResult {
+    private int pageNo = -1;
 
-       private int writeAccessColIndex = -1;
+    private int pageSize = 50;
 
-       private int ownerIndicatorColIndex = -1;
+    private int dataSize = -1;
 
-       private String csvPageFileName = null;
-       
+    private int writeAccessColIndex = -1;
 
+    private int ownerIndicatorColIndex = -1;
 
-       private String csvAllRowsFileName = null;
-       
-       private String excelAllRowsFileName = null;     
+    private String csvPageFileName = null;
 
-       public ArrayList searchResultColumns = new ArrayList();
-       
-       public ArrayList searchResultRows = new ArrayList();
+    private String csvAllRowsFileName = null;
 
-       public SearchResult(int pageNo) {
-               this(pageNo, Globals.getDefaultPageSize());
-       } // SearchResult
+    private String excelAllRowsFileName = null;
 
-       public SearchResult(int pageNo, int pageSize) {
-               this(pageNo, pageSize, -1, -1);
-       } // SearchResult
+    public ArrayList searchResultColumns = new ArrayList();
 
-       public SearchResult(int pageNo, int pageSize, int writeAccessColIndex,
-                       int ownerIndicatorColIndex) {
-               super();
+    public ArrayList searchResultRows = new ArrayList();
 
-               this.pageNo = pageNo;
-               this.pageSize = pageSize;
+    public SearchResult(int pageNo) {
+        this(pageNo, Globals.getDefaultPageSize());
+    } // SearchResult
 
-               this.writeAccessColIndex = writeAccessColIndex;
-               this.ownerIndicatorColIndex = ownerIndicatorColIndex;
-       } // SearchResult
+    public SearchResult(int pageNo, int pageSize) {
+        this(pageNo, pageSize, -1, -1);
+    } // SearchResult
 
-       public int getPageNo() {
-               return pageNo;
-       }
+    public SearchResult(int pageNo, int pageSize, int writeAccessColIndex,
+            int ownerIndicatorColIndex) {
+        super();
 
-       public int getPageSize() {
-               return pageSize;
-       }
+        this.pageNo = pageNo;
+        this.pageSize = pageSize;
 
-       public int getDataSize() {
-               return dataSize;
-       }
+        this.writeAccessColIndex = writeAccessColIndex;
+        this.ownerIndicatorColIndex = ownerIndicatorColIndex;
+    } // SearchResult
 
-       public String getCsvPageFileName() {
-               return csvPageFileName;
-       }
+    public int getPageNo() {
+        return pageNo;
+    }
 
-       public String getCsvAllRowsFileName() {
-               return csvAllRowsFileName;
-       }
+    public int getPageSize() {
+        return pageSize;
+    }
 
-       public String getExcelAllRowsFileName() {
-               return excelAllRowsFileName;
-       }
-       
-       private void setDataSize(int dataSize) {
-               this.dataSize = dataSize;
-       }
+    public int getDataSize() {
+        return dataSize;
+    }
 
-       public void setCsvPageFileName(String csvPageFileName) {
-               this.csvPageFileName = csvPageFileName;
-       }
+    public String getCsvPageFileName() {
+        return csvPageFileName;
+    }
+
+    public String getCsvAllRowsFileName() {
+        return csvAllRowsFileName;
+    }
+
+    public String getExcelAllRowsFileName() {
+        return excelAllRowsFileName;
+    }
 
+    private void setDataSize(int dataSize) {
+        this.dataSize = dataSize;
+    }
 
-       
-       public void setCsvAllRowsFileName(String csvAllRowsFileName) {
-               this.csvAllRowsFileName = csvAllRowsFileName;
-       }
+    public void setCsvPageFileName(String csvPageFileName) {
+        this.csvPageFileName = csvPageFileName;
+    }
 
+    public void setCsvAllRowsFileName(String csvAllRowsFileName) {
+        this.csvAllRowsFileName = csvAllRowsFileName;
+    }
 
+    public void addColumn(SearchResultColumn column) {
+        searchResultColumns.add(column);
+    } // addColumn
 
-       public void addColumn(SearchResultColumn column) {
-               searchResultColumns.add(column);
-       } // addColumn
+    public SearchResultColumn getColumn(int index) {
+        return (SearchResultColumn) searchResultColumns.get(index);
+    } // getColumn
 
-       public SearchResultColumn getColumn(int index) {
-               return (SearchResultColumn) searchResultColumns.get(index);
-       } // getColumn
+    public int getNumColumns() {
+        return searchResultColumns.size();
+    } // getNumColumns
 
-       public int getNumColumns() {
-               return searchResultColumns.size();
-       } // getNumColumns
+    public int getNumRows() {
+        return searchResultRows.size();
+    } // getNumRows
 
-       public int getNumRows() {
-               return searchResultRows.size();
-       } // getNumRows
+    public SearchResultRow getRow(int index) {
+        return (SearchResultRow) searchResultRows.get(index);
+    } // getRow
 
-       public SearchResultRow getRow(int index) {
-               return (SearchResultRow) searchResultRows.get(index);
-       } // getRow
+    public void parseData(DataSet ds, HttpServletRequest request) throws RaptorException {
+        // Presumes single ID field in the first column of the DataSet and row
+        // number in the first SearchResultColumn
+        String userID = AppUtils.getUserID(request);
+        setDataSize(ds.getRowCount());
 
-       public void parseData(DataSet ds, HttpServletRequest request) throws RaptorException {
-               // Presumes single ID field in the first column of the DataSet and row
-               // number in the first SearchResultColumn
-               String userID = AppUtils.getUserID(request);
-               setDataSize(ds.getRowCount());
-
-               int startRow = (pageNo >= 0) ? (pageNo * pageSize) : 0;
-               int endRow = (pageNo >= 0) ? Math.min(startRow + pageSize, ds.getRowCount()) : ds
-                               .getRowCount();
-               for (int r = startRow; r < endRow; r++) {
-                       SearchResultRow row = new SearchResultRow();
-                       searchResultRows.add(row);
-
-                       String idValue = ds.getString(r, 0);
-
-                       boolean bCanEdit = true;
-                       if (writeAccessColIndex >= 0) {
-                               String isReadOnlyValue = nvl(ds.getString(r, writeAccessColIndex), "Y");
-                               bCanEdit = AppUtils.isSuperUser(request) || AppUtils.isAdminUser(request)
-                                               || isReadOnlyValue.equals("N");
-                       }
-
-                       boolean bCanDelete = bCanEdit;
-                       if (Globals.getDeleteOnlyByOwner() && ownerIndicatorColIndex >= 0) {
-                               String isOwnedByUserRecord = nvl(ds.getString(r, ownerIndicatorColIndex), "N");
-                               bCanDelete = AppUtils.isSuperUser(request) || isOwnedByUserRecord.equals("Y");
-                       }
-                       
-                       boolean bCanSchedule = ds.getString(r, getNumColumns()-3).equals("Y");
-
-                       row.addSearchResultField(new SearchResultField("" + (r + 1), idValue,
-                                       getColumn(0), true));
-                       boolean isAuthorized = true;
-                       for (int c = 1; c < getNumColumns(); c++) {
-                               SearchResultColumn column = getColumn(c);
-                               isAuthorized = true;
-
-                               if(column.isCopyLink()) 
-                                       isAuthorized = Globals.getCanCopyOnReadOnly()? true:bCanEdit;
-                               else if (column.isDeleteLink())
-                                       isAuthorized = bCanDelete;
-                               else if (column.isEditLink())
-                                       isAuthorized = bCanEdit;
-                               else if (column.isScheduleLink())
-                                       isAuthorized = bCanSchedule;
-
-                               row.addSearchResultField(new SearchResultField(
-                                               (column.getLinkURL() == null) ? ds.getString(r, c) : column
-                                                               .getLinkTitle(), idValue,  column, isAuthorized
-                                               ));
-                       } // for
-               } // for
-       } // parseData
-
-       public void truncateToPage(int pageNo) {
-               if (this.pageNo >= 0 || pageNo < 0)
-                       return;
-
-               this.pageNo = pageNo;
-
-               int startRow = pageNo * pageSize;
-               int endRow = Math.min(startRow + pageSize, dataSize);
-
-               for (int r = getNumRows() - 1; r >= endRow; r--)
-                       searchResultRows.remove(r);
-
-               for (int r = startRow - 1; r >= 0; r--)
-                       searchResultRows.remove(r);
-       } // truncateToPage
-
-       /** *********************************************************************** */
-
-       private String nvl(String s) {
-               return (s == null) ? "" : s;
-       }
-
-       private String nvl(String s, String sDefault) {
-               return nvl(s).equals("") ? sDefault : s;
-       }
+        int startRow = (pageNo >= 0) ? (pageNo * pageSize) : 0;
+        int endRow = (pageNo >= 0) ? Math.min(startRow + pageSize, ds.getRowCount())
+                : ds
+                        .getRowCount();
+        for (int r = startRow; r < endRow; r++) {
+            SearchResultRow row = new SearchResultRow();
+            searchResultRows.add(row);
+
+            String idValue = ds.getString(r, 0);
+
+            boolean bCanEdit = true;
+            if (writeAccessColIndex >= 0) {
+                String isReadOnlyValue = nvl(ds.getString(r, writeAccessColIndex), "Y");
+                bCanEdit = AppUtils.isSuperUser(request) || AppUtils.isAdminUser(request);
+                if (isReadOnlyValue != null) {
+                    bCanEdit = bCanEdit || isReadOnlyValue.equals("N");
+                }
+            }
+
+            boolean bCanDelete = bCanEdit;
+            if (Globals.getDeleteOnlyByOwner() && ownerIndicatorColIndex >= 0) {
+                String isOwnedByUserRecord = nvl(ds.getString(r, ownerIndicatorColIndex), "N");
+                bCanDelete = AppUtils.isSuperUser(request);
+                if (isOwnedByUserRecord != null) {
+                    bCanDelete = bCanDelete || isOwnedByUserRecord.equals("Y");
+                }
+            }
+
+            boolean bCanSchedule = ds.getString(r, getNumColumns() - 3).equals("Y");
+
+            row.addSearchResultField(new SearchResultField("" + (r + 1), idValue,
+                    getColumn(0), true));
+            boolean isAuthorized = true;
+            for (int c = 1; c < getNumColumns(); c++) {
+                SearchResultColumn column = getColumn(c);
+                isAuthorized = true;
+
+                if (column.isCopyLink())
+                    isAuthorized = Globals.getCanCopyOnReadOnly() ? true : bCanEdit;
+                else if (column.isDeleteLink())
+                    isAuthorized = bCanDelete;
+                else if (column.isEditLink())
+                    isAuthorized = bCanEdit;
+                else if (column.isScheduleLink())
+                    isAuthorized = bCanSchedule;
+
+                row.addSearchResultField(new SearchResultField(
+                        (column.getLinkURL() == null) ? ds.getString(r, c)
+                                : column
+                                        .getLinkTitle(),
+                        idValue, column, isAuthorized));
+            } // for
+        } // for
+    } // parseData
+
+    public void truncateToPage(int pageNo) {
+        if (this.pageNo >= 0 || pageNo < 0)
+            return;
+
+        this.pageNo = pageNo;
+
+        int startRow = pageNo * pageSize;
+        int endRow = Math.min(startRow + pageSize, dataSize);
+
+        for (int r = getNumRows() - 1; r >= endRow; r--)
+            searchResultRows.remove(r);
+
+        for (int r = startRow - 1; r >= 0; r--)
+            searchResultRows.remove(r);
+    } // truncateToPage
+
+    /** *********************************************************************** */
+
+    private String nvl(String s) {
+        return (s == null) ? "" : s;
+    }
+
+    private String nvl(String s, String sDefault) {
+        return nvl(s).equals("") ? sDefault : s;
+    }
 
 } // SearchResult
index 3fd2f1b..8eda540 100644 (file)
@@ -33,7 +33,7 @@
  *
  * ============LICENSE_END============================================
  *
- * 
+ *
  */
 package org.onap.portalsdk.analytics.system.fusion.web;
 
@@ -69,140 +69,145 @@ import com.fasterxml.jackson.databind.SerializationFeature;
 @RequestMapping("/")
 public class RaptorController extends RestrictedBaseController {
 
-       private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RaptorController.class);
-
-       @RequestMapping(value = { "/report" }, method = RequestMethod.GET)
-       public ModelAndView report(HttpServletRequest request) {
-               request.getSession().setAttribute("isEmbedded", false);
-               return new ModelAndView("report");
-       }
-       
-       @RequestMapping(value = { "/reportDS1" }, method = RequestMethod.GET)
-       public ModelAndView reportDS1(HttpServletRequest request) {
-               request.getSession().setAttribute("isEmbedded", false);
-               return new ModelAndView("reportDS1");
-       }       
-
-       @RequestMapping(value = { "/report_embedded" }, method = RequestMethod.GET)
-       public ModelAndView reportEmbedded(HttpServletRequest request) {
-               request.getSession().setAttribute("isEmbedded", true);
-               return new ModelAndView("report_embedded");
-       }
-
-       @RequestMapping(value = { "/report_sample" }, method = RequestMethod.GET)
-       public ModelAndView reportSample(HttpServletRequest request) {
-               return new ModelAndView("report_sample");
-       }
-
-       @RequestMapping(value = { "/report_import.htm" }, method = RequestMethod.GET)
-       public ModelAndView reportImport(HttpServletRequest request) throws IOException {
-               String viewName = "report_import";
-               Action action = null;
-               String actionKey = "report.import";
-               ServletContext servletContext = request.getSession().getServletContext();
-               if (!Globals.isSystemInitialized()) {
-                       Globals.initializeSystem(servletContext);
-               }
-               try {
-                       action = Globals.getRaptorActionMapping().getAction(actionKey);
-                       if (action == null)
-                               throw new RaptorRuntimeException("Action not found");
-               } catch (RaptorException e) {
-                       logger.debug(EELFLoggerDelegate.debugLogger, ("[Controller.processRequest]Invalid raptor action ["
-                                       + actionKey + "]. RaptorException: " + e.getMessage()));
-                       viewName = new ErrorHandler().processFatalError(request,
-                                       new RaptorRuntimeException("[Controller.processRequest]Invalid raptor action [" + actionKey
-                                                       + "]. Exception: " + e.getMessage()));
-               }
-               return new ModelAndView(viewName, "model", null);
-       }
-
-       @RequestMapping(value = { "/report_wizard.htm" }, method = { RequestMethod.POST, RequestMethod.GET })
-       public ModelAndView reportWizard(HttpServletRequest request, HttpServletResponse response) throws IOException {
-               String viewName = "";
-               String actionKey = nvl(request.getParameter(AppConstants.RI_ACTION), request.getParameter("action"));
-               actionKey = nvl(actionKey, "report.run");
-               Action action = null;
-               ServletContext servletContext = request.getSession().getServletContext();
-               if (!Globals.isSystemInitialized()) {
-                       Globals.initializeSystem(servletContext);
-               }
-               try {
-                       action = Globals.getRaptorActionMapping().getAction(actionKey);
-                       if (action == null)
-                               throw new RaptorRuntimeException("Action not found");
-               } catch (RaptorException e) {
-                       logger.debug(EELFLoggerDelegate.debugLogger, ("[Controller.processRequest]Invalid raptor action ["
-                                       + actionKey + "]. RaptorException: " + e.getMessage()));
-                       viewName = (new ErrorHandler()).processFatalError(request,
-                                       new RaptorRuntimeException("[Controller.processRequest]Invalid raptor action [" + actionKey
-                                                       + "]. Exception: " + e.getMessage()));
-                       ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
-                       errorJSONRuntime.setErrormessage(e.toString());
-                       errorJSONRuntime.setStacktrace(getStackTrace(e));
-                       ObjectMapper mapper = new ObjectMapper();
-                       mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
-                       mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-                       String jsonInString = "";
-                       try {
-                               jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime);
-                       } catch (Exception ex) {
-                               ex.printStackTrace();
-                               
-                       }
-               }
-
-               try {
-                       Class<?>[] paramTypes = new Class[2];
-                       paramTypes[0] = Class.forName("javax.servlet.http.HttpServletRequest");
-                       paramTypes[1] = Class.forName("java.lang.String");
-
-                       Class<?> handlerClass = Class.forName(action.getControllerClass());
-                       Object handler = handlerClass.newInstance();
-                       Method handlerMethod = handlerClass.getMethod(action.getControllerMethod(), paramTypes);
-
-                       Object[] paramValues = new Object[2];
-                       paramValues[0] = request;
-                       paramValues[1] = action.getJspName();
-                       viewName = (String) handlerMethod.invoke(handler, paramValues);
-               } catch (Exception e) {
-                       logger.debug(EELFLoggerDelegate.debugLogger, ("[Controller.processRequest]Invalid raptor action ["
-                                       + actionKey + "]. Exception: " + e.getMessage()));
-                       viewName = (new ErrorHandler()).processFatalError(request,
-                                       new RaptorRuntimeException(
-                                                       "[Controller.processRequest] Unable to instantiate and invoke action handler. Exception: "
-                                                                       + e.getMessage()));
-                       
-                       ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
-                       errorJSONRuntime.setErrormessage(e.toString());
-                       errorJSONRuntime.setStacktrace(getStackTrace(e));
-                       ObjectMapper mapper = new ObjectMapper();
-                       mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
-                       mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-                       String jsonInString = "";
-                       try {
-                               jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime);
-                       } catch (Exception ex) {
-                               ex.printStackTrace();
-                               
-                       }
-               }
-               return new ModelAndView(viewName, "model", null);
-       }
-
-       private String nvl(String s) {
-               return (s == null) ? "" : s;
-       }
-
-       private String nvl(String s, String sDefault) {
-               return nvl(s).equals("") ? sDefault : s;
-       }
-       
-         public static String getStackTrace(Throwable aThrowable) {
-                   Writer result = new StringWriter();
-                   PrintWriter printWriter = new PrintWriter(result);
-                   aThrowable.printStackTrace(printWriter);
-                   return result.toString();
-                 }
+    private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RaptorController.class);
+    private static final String IS_EMBEDDED = "isEmbedded";
+    private static final String ACTION_NOT_FOUND = "Action not found";
+
+    @RequestMapping(value = { "/report" }, method = RequestMethod.GET)
+    public ModelAndView report(HttpServletRequest request) {
+        request.getSession().setAttribute(IS_EMBEDDED, false);
+        return new ModelAndView("report");
+    }
+
+    @RequestMapping(value = { "/reportDS1" }, method = RequestMethod.GET)
+    public ModelAndView reportDS1(HttpServletRequest request) {
+        request.getSession().setAttribute(IS_EMBEDDED, false);
+        return new ModelAndView("reportDS1");
+    }
+
+    @RequestMapping(value = { "/report_embedded" }, method = RequestMethod.GET)
+    public ModelAndView reportEmbedded(HttpServletRequest request) {
+        request.getSession().setAttribute(IS_EMBEDDED, true);
+        return new ModelAndView("report_embedded");
+    }
+
+    @RequestMapping(value = { "/report_sample" }, method = RequestMethod.GET)
+    public ModelAndView reportSample(HttpServletRequest request) {
+        return new ModelAndView("report_sample");
+    }
+
+    @RequestMapping(value = { "/report_import.htm" }, method = RequestMethod.GET)
+    public ModelAndView reportImport(HttpServletRequest request) throws IOException {
+        String viewName = "report_import";
+        Action action = null;
+        String actionKey = "report.import";
+        ServletContext servletContext = request.getSession().getServletContext();
+        if (!Globals.isSystemInitialized()) {
+            Globals.initializeSystem(servletContext);
+        }
+        try {
+            action = Globals.getRaptorActionMapping().getAction(actionKey);
+            if (action == null)
+                throw new RaptorRuntimeException(ACTION_NOT_FOUND);
+        } catch (RaptorException e) {
+            logger.debug(EELFLoggerDelegate.debugLogger, ("[Controller.processRequest]Invalid raptor action ["
+                    + actionKey + "]. RaptorException: " + e.getMessage()));
+            viewName = new ErrorHandler().processFatalError(request,
+                    new RaptorRuntimeException("[Controller.processRequest]Invalid raptor action [" + actionKey
+                            + "]. Exception: " + e.getMessage()));
+        }
+        return new ModelAndView(viewName, "model", null);
+    }
+
+    @RequestMapping(value = { "/report_wizard.htm" }, method = { RequestMethod.POST, RequestMethod.GET })
+    public ModelAndView reportWizard(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        String viewName = "";
+        String actionKey = nvl(request.getParameter(AppConstants.RI_ACTION), request.getParameter("action"));
+        actionKey = nvl(actionKey, "report.run");
+        Action action = null;
+        ServletContext servletContext = request.getSession().getServletContext();
+        if (!Globals.isSystemInitialized()) {
+            Globals.initializeSystem(servletContext);
+        }
+        try {
+            action = Globals.getRaptorActionMapping().getAction(actionKey);
+            if (action == null) {
+                throw new RaptorRuntimeException(ACTION_NOT_FOUND);
+            }
+        } catch (RaptorException e) {
+            logger.debug(EELFLoggerDelegate.debugLogger, ("[Controller.processRequest]Invalid raptor action ["
+                    + actionKey + "]. RaptorException: " + e.getMessage()));
+            viewName = (new ErrorHandler()).processFatalError(request,
+                    new RaptorRuntimeException("[Controller.processRequest]Invalid raptor action [" + actionKey
+                            + "]. Exception: " + e.getMessage()));
+            ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
+            errorJSONRuntime.setErrormessage(e.toString());
+            errorJSONRuntime.setStacktrace(getStackTrace(e));
+            ObjectMapper mapper = new ObjectMapper();
+            mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
+            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+            String jsonInString = "";
+            try {
+                jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime);
+            } catch (Exception ex) {
+                logger.debug(EELFLoggerDelegate.debugLogger, "Exception in JSON mapper", ex);
+            }
+        }
+
+        try {
+            Class<?>[] paramTypes = new Class[2];
+            paramTypes[0] = Class.forName("javax.servlet.http.HttpServletRequest");
+            paramTypes[1] = Class.forName("java.lang.String");
+
+            if (action != null) {
+                Class<?> handlerClass = Class.forName(action.getControllerClass());
+                Object handler = handlerClass.newInstance();
+                Method handlerMethod = handlerClass.getMethod(action.getControllerMethod(), paramTypes);
+
+                Object[] paramValues = new Object[2];
+                paramValues[0] = request;
+                paramValues[1] = action.getJspName();
+                viewName = (String) handlerMethod.invoke(handler, paramValues);
+            } else {
+                throw new RaptorRuntimeException(ACTION_NOT_FOUND);
+            }
+        } catch (Exception e) {
+            logger.debug(EELFLoggerDelegate.debugLogger, ("[Controller.processRequest]Invalid raptor action ["
+                    + actionKey + "]. Exception: " + e.getMessage()));
+            viewName = (new ErrorHandler()).processFatalError(request,
+                    new RaptorRuntimeException(
+                            "[Controller.processRequest] Unable to instantiate and invoke action handler. Exception: "
+                                    + e.getMessage()));
+
+            ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
+            errorJSONRuntime.setErrormessage(e.toString());
+            errorJSONRuntime.setStacktrace(getStackTrace(e));
+            ObjectMapper mapper = new ObjectMapper();
+            mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
+            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+            String jsonInString = "";
+            try {
+                jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime);
+            } catch (Exception ex) {
+                logger.debug(EELFLoggerDelegate.debugLogger, "Exception in JSON mapper", ex);
+            }
+        }
+        return new ModelAndView(viewName, "model", null);
+    }
+
+    private String nvl(String s) {
+        return (s == null) ? "" : s;
+    }
+
+    private String nvl(String s, String sDefault) {
+        return nvl(s).equals("") ? sDefault : s;
+    }
+
+    public static String getStackTrace(Throwable aThrowable) {
+        Writer result = new StringWriter();
+        PrintWriter printWriter = new PrintWriter(result);
+        aThrowable.printStackTrace(printWriter);
+        return result.toString();
+    }
 
 }