NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

//$Id$
package com.manageengine.ela.webclient.ember.servlet.data.table.model.database;

import com.adventnet.ds.query.Column;
import com.adventnet.ds.query.Criteria;
import com.adventnet.ds.query.SelectQuery;
import com.adventnet.ds.query.SortColumn;
import com.manageengine.ela.server.common.client.adapters.ClinetDBTableDataAdapter;
import com.manageengine.ela.server.common.client.datasource.KeyBasedSearchResult;
import com.manageengine.ela.server.common.client.structure.ClientTableStructure;
import com.manageengine.ela.server.common.client.structure.TableUniqueIdentifier;
import com.manageengine.ela.server.common.response.BaseStatusCode;
import com.manageengine.ela.server.common.response.PredefinedStatusCodes;
import com.manageengine.ela.server.common.response.builder.JSONResponseBuilder;
import com.manageengine.ela.webclient.ember.common.constants.ResponseType;
import com.manageengine.ela.webclient.ember.common.request.handlers.ClientRequestHandler;
import com.manageengine.ela.webclient.ember.common.request.handlers.EmberTableRequestHandler;
import com.manageengine.ela.webclient.ember.servlet.data.table.model.EmberTableModel;
import com.manageengine.ela.webclient.ember.servlet.data.table.model.constants.SearchType;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Map;


/**
* @author praveen.aj
*
* Created at Nov 16, 2016
*/
public class BaseClientDBTableModel implements EmberTableModel
{

@Override
public void execute(ClientRequestHandler elarequestHandler, JSONObject requestJSON, JSONResponseBuilder responseBuilder) throws IOException
{
elarequestHandler.setContentType(ResponseType.APPLICATIONJSON);
try
{
EmberTableRequestHandler requestHandler = new EmberTableRequestHandler(requestJSON, elarequestHandler.getLocale());
TableUniqueIdentifier tableIdentifier = requestHandler.getTableIdentifier();
preAction(elarequestHandler, requestHandler, responseBuilder);
if(!checkISAllowedAccess(elarequestHandler, requestHandler))
{
responseBuilder.setStatus(BaseStatusCode.getBaseStatusCode(PredefinedStatusCodes.ACCESS_DENIED));
}
else
{
JSONObject tableProperties = ClientTableStructure.getTableProperties(tableIdentifier);

SearchType searchType = SearchType.get(requestHandler.getoptSearchType(tableProperties.getInt("DEFAULT_SEARCHTYPE")));
int tableType = tableProperties.getInt("TABLE_TYPE"); // No I18N
ClinetDBTableDataAdapter emberTableAdapter;

SelectQuery selectQuery = getDefaultSelectQuery();

if (selectQuery == null)
{
emberTableAdapter = new ClinetDBTableDataAdapter(tableIdentifier,elarequestHandler.getLocale(),elarequestHandler.getTimeZone(), tableType,elarequestHandler.getDateFormat());
} else
{
emberTableAdapter = new ClinetDBTableDataAdapter(selectQuery ,tableIdentifier.getTableId(),elarequestHandler.getLocale(),elarequestHandler.getTimeZone(),elarequestHandler.getDateFormat());
}

//to initialize data adapters
initializeDataAdapters(elarequestHandler, requestHandler, emberTableAdapter, responseBuilder);

//Column selection
selectColumnsForEmberTable(elarequestHandler, requestHandler, emberTableAdapter);

//SortColumn selection
addSortColumnsForEmberTable(elarequestHandler, requestHandler, emberTableAdapter);

//Search and filter criteria
addCriteriaForEmberTable(elarequestHandler, requestHandler, emberTableAdapter, responseBuilder, searchType);

//to handle search based getData
finalizeSelectQuery(elarequestHandler, requestHandler, emberTableAdapter, responseBuilder);

//CollectResult
JSONArray resultJsonArray = getResultArray(elarequestHandler, requestHandler, emberTableAdapter, responseBuilder, searchType);
if(resultJsonArray != null && resultJsonArray.length() > 0)
{
resultJsonArray = customizeSearchResults(elarequestHandler, requestHandler, resultJsonArray);
responseBuilder.setResponse(resultJsonArray);
}
}
postAction(elarequestHandler, requestHandler, responseBuilder);
}
catch(BaseStatusCode statusCode)
{
responseBuilder.setStatus(statusCode);
}
catch(Exception exp)
{
exp.printStackTrace();
responseBuilder.setStatus(BaseStatusCode.getBaseStatusCode(PredefinedStatusCodes.INVALID_PARAMETERS));
}

}

public SelectQuery getDefaultSelectQuery()
{
return null;
}

private void selectColumnsForEmberTable(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler, ClinetDBTableDataAdapter emberTableAdapter) throws JSONException, BaseStatusCode
{
//Column selection
if(requestHandler.isSearchRequest() && requestHandler.isAutoComplete())
{
emberTableAdapter.addSelectColumn(getSingleSearchColumn(elarequestHandler, requestHandler, emberTableAdapter));
}
else
{
Map<String,ArrayList<Column>> allColumns = requestHandler.getAllSQLColumns();
emberTableAdapter.addSelectColumn(allColumns.get(ClientTableStructure.ORIGINAL_COLUMNS));
emberTableAdapter.addDummyColumns(allColumns.get(ClientTableStructure.PSEUDO_COLUMNS));
}

}
private void addSortColumnsForEmberTable(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler, ClinetDBTableDataAdapter emberTableAdapter) throws JSONException, BaseStatusCode
{
//SortColumn selection
emberTableAdapter.addSortColumn(requestHandler.getSQLSortColumns()); //Get Optional Sort
SortColumn col = getDefaultSortColumn(elarequestHandler, requestHandler);
if(col != null)
{
emberTableAdapter.addSortColumn(getDefaultSortColumn(elarequestHandler, requestHandler)); //Get Optional Sort
}

}
private void addCriteriaForEmberTable(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler, ClinetDBTableDataAdapter emberTableAdapter, JSONResponseBuilder responseBuilder, SearchType searchType) throws JSONException, BaseStatusCode
{
//Search criteria
if(requestHandler.isSearchRequest())
{
addSearchCrietraia(elarequestHandler, requestHandler, emberTableAdapter, searchType); //Get Optional Search
}

//filter criteria handling
emberTableAdapter.addCriteria(getFilterCriteria(elarequestHandler, requestHandler));

//Post search action before default criteria
postSearchAction(elarequestHandler, requestHandler, emberTableAdapter, responseBuilder);

//default criteria handling
emberTableAdapter.addCriteria(getDefaultCriteria(elarequestHandler, requestHandler));
}
private void addSearchCrietraia(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler, ClinetDBTableDataAdapter emberTableAdapter, SearchType searchType) throws IllegalAccessError, JSONException
{
if(searchType != SearchType.KEYBASED)
{
emberTableAdapter.addCriteria(requestHandler.getSQLSearchCriteria()); //Get Optional Search
}
//TODO handle multiple column search
}
protected JSONArray getResultArray(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler, ClinetDBTableDataAdapter emberTableAdapter, JSONResponseBuilder responseBuilder, SearchType searchType) throws BaseStatusCode, JSONException
{
JSONArray resultJsonArray = null;
if(requestHandler.isSearchRequest() && searchType == SearchType.KEYBASED)
{
String condnString = requestHandler.getSQLSearchActionValue();
if(condnString == null)
{
throw BaseStatusCode.getBaseStatusCode(PredefinedStatusCodes.INVALID_PARAMETERS);
}
Column column = getSingleSearchColumn(elarequestHandler, requestHandler, emberTableAdapter);
Column conditionColumn = getKeyBasedSearchConditionColumn(elarequestHandler, requestHandler);
KeyBasedSearchResult result = emberTableAdapter.getkeyBasedSearchResult(column, condnString, conditionColumn, elarequestHandler.getLocale(), requestHandler.getOffset(), requestHandler.getLimit());
if(result != null)
{
resultJsonArray = result.getResultArrayForClient();
responseBuilder.setTotalCount(result.getTotalCount());
}
}
else
{
long totalCount = emberTableAdapter.getTotalCount();
responseBuilder.setTotalCount(totalCount);
if (totalCount > 0)
{
resultJsonArray = emberTableAdapter.page(requestHandler.getLimit(), requestHandler.getOffset());
}
}
return resultJsonArray;
}

private Column getSingleSearchColumn(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler, ClinetDBTableDataAdapter emberTableAdapter) throws BaseStatusCode, JSONException
{
if (requestHandler.getSQLSearchByColumn()!=null)
{
return requestHandler.getSQLSearchByColumn();
}
else
{
Column col = getDefaultSearchColumn(elarequestHandler, requestHandler);
if(col != null)
{
return col;
}
else
{
throw BaseStatusCode.getBaseStatusCode(PredefinedStatusCodes.INVALID_PARAMETERS);
}
}
}

protected void preAction(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler,JSONResponseBuilder responseBuilder) throws BaseStatusCode
{

}
protected void postAction(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler,JSONResponseBuilder responseBuilder) throws BaseStatusCode
{

}
protected void finalizeSelectQuery(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler, ClinetDBTableDataAdapter emberTableAdapter, JSONResponseBuilder responseBuilder)
{
}
protected JSONArray customizeSearchResults(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler, JSONArray resultJsonArray) throws BaseStatusCode
{
return resultJsonArray;
}
protected Criteria getFilterCriteria(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler) throws BaseStatusCode
{
return null;
}
protected Column getDefaultSearchColumn(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler) throws BaseStatusCode
{
return null;
}
protected SortColumn getDefaultSortColumn(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler) throws BaseStatusCode
{
return null;
}
protected Criteria getDefaultCriteria(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler) throws BaseStatusCode
{
return null;
}
protected boolean checkISAllowedAccess(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler) throws BaseStatusCode
{
return true;
}
protected Column getKeyBasedSearchConditionColumn(ClientRequestHandler elarequestHandler, EmberTableRequestHandler requestHandler) throws BaseStatusCode
{
return null;
}
protected void initializeDataAdapters(ClientRequestHandler elarequestHandler , EmberTableRequestHandler requestHandler , ClinetDBTableDataAdapter emberTableAdapter , JSONResponseBuilder responseBuilder)
{
}
protected void postSearchAction(ClientRequestHandler elarequestHandler , EmberTableRequestHandler requestHandler , ClinetDBTableDataAdapter emberTableAdapter , JSONResponseBuilder responseBuilder)
{
}

}
     
 
what is notes.io
 

Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 12 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.