/*
* $RCSfile: ViewEJB.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/04/28 20:23:18 $ - $Author: mking_cv $
*
* The contents of this file are subject to the Open Software License
* Version 2.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.centraview.com/opensource/license.html
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is: CentraView Open Source.
*
* The developer of the Original Code is CentraView. Portions of the
* Original Code created by CentraView are Copyright (c) 2004 CentraView,
* LLC; All Rights Reserved. The terms "CentraView" and the CentraView
* logos are trademarks and service marks of CentraView, LLC.
*/
package com.centraview.view;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Vector;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.naming.Context;
import javax.naming.InitialContext;
import com.centraview.common.CVDal;
import com.centraview.common.CVUtility;
import com.centraview.common.DDNameValue;
import com.centraview.common.ListView;
public class ViewEJB implements SessionBean
{
protected javax.ejb.SessionContext ctx;
protected Context environment;
private String dataSource = "";
/*
* Set the associated session context. The container calls this method after the instance
* creation. The enterprise Bean instance should store the reference to the context
* object in an instance variable. This method is called with no transaction context.
*/
public void setSessionContext(SessionContext ctx)
{
this.ctx = ctx;
}
public ViewEJB() { }
public void ejbCreate() { }
public void ejbRemove() { }
public void ejbActivate() { }
public void ejbPassivate() { }
/*
* Used to add a new view entry
*/
public int addView(int userId, ViewVO viewVO)
{
int viewId = 0;
CVDal cvdl = new CVDal(dataSource);
try {
cvdl.setSql("view.insertview");
cvdl.setString(1,viewVO.getListType());
cvdl.setString(2,viewVO.getViewName());
cvdl.setString(3,viewVO.getSortMember());
cvdl.setString(4,viewVO.getSortType());
cvdl.setInt(5,viewVO.getSearchId());
cvdl.setString(6, viewVO.getSearchType());
cvdl.setInt(7,viewVO.getNoOfRecord());
cvdl.setInt(8, viewVO.getCreatedBy());
cvdl.setInt(9, viewVO.getOwner());
cvdl.executeUpdate();
viewId = cvdl.getAutoGeneratedKey();
// insert into table viewcolumns
Vector columnVector = viewVO.getViewColumnVO();
if (columnVector != null) {
int sizeOfColumn = columnVector.size();
for (int i = 0; i < sizeOfColumn; i++) {
ViewColumnVO columnVO = (ViewColumnVO)columnVector.get(i);
cvdl.clearParameters();
cvdl.setSql("view.insertviewcolumn");
cvdl.setInt(1, viewId);
cvdl.setString(2, columnVO.getColumnName());
cvdl.setInt(3, columnVO.getColumnOrder());
cvdl.executeUpdate();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
cvdl.destroy();
cvdl = null;
}
return viewId;
}
/**
* Used to get view information
* @param individualId The <strong>individualId</strong> of the user requesting the data.
* @param viewVO A populated ViewVO representing the view being requested.
*/
public ViewVO getView(int individualId, int viewId)
{
ViewVO viewVO = new ViewVO();
CVDal cvdl = new CVDal(dataSource);
try {
cvdl.setSql("view.getview");
cvdl.setInt(1, viewId);
Collection col = cvdl.executeQuery();
cvdl.clearParameters();
cvdl.setSql("view.getcolumnview");
cvdl.setInt(1, viewId);
Collection columnCol = cvdl.executeQuery();
Iterator it = col.iterator();
HashMap hm = (HashMap)it.next();
viewVO.setViewId(((Long)hm.get("viewid")).intValue());
viewVO.setListType((String)hm.get("listtype"));
viewVO.setViewName((String)hm.get("viewname"));
viewVO.setSortMember((String)hm.get("sortmember"));
viewVO.setSortType((String)hm.get("sorttype"));
viewVO.setSearchId(((Long)hm.get("searchid")).intValue());
viewVO.setSearchType((String)hm.get("searchtype"));
viewVO.setNoOfRecord(((Long)hm.get("noofrecords")).intValue());
//Get Relations
InitialContext ic = CVUtility.getInitialContext();
cvdl.clearParameters();
cvdl.setSql("view.getsystemdefaultview");
cvdl.setString(1, viewVO.getListType());
Collection systemDefaultCol = cvdl.executeQuery();
// column views
Vector columnVector = new Vector();
if (columnCol != null) {
it = columnCol.iterator();
while (it.hasNext()) {
ViewColumnVO viewColVO = new ViewColumnVO();
HashMap vchm = (HashMap)it.next();
viewColVO.setViewId(viewId);
viewColVO.setColumnName((String)vchm.get("columnname"));
viewColVO.setColumnOrder(((Long)vchm.get("columnorder")).intValue());
DDNameValue selectedColumnDD = new DDNameValue(viewColVO.getColumnName(),viewColVO.getColumnName());
columnVector.add(selectedColumnDD);
}
}
viewVO.setViewColumnVO(columnVector);
// set system default view
if (systemDefaultCol != null) {
Iterator systemDefaultViewIterator = systemDefaultCol.iterator();
if (systemDefaultViewIterator.hasNext()) {
HashMap hmDefault = (HashMap)systemDefaultViewIterator.next();
int systemDefaultViewId = ((Long)hmDefault.get("viewid")).intValue();
if (systemDefaultViewId == viewId) {
viewVO.setDefaultView("true");
} else {
viewVO.setDefaultView("false");
}
}
} else {
viewVO.setDefaultView("false");
}
int viewOwnerId = 0;
if (hm.get("ownerid") != null) {
viewOwnerId = ((Long)hm.get("ownerid")).intValue();
}
viewVO.setSearchIdName(getOwnerSearch(viewOwnerId, viewVO.getListType()));
} catch (Exception e) {
e.printStackTrace();
} finally {
cvdl.destroy();
cvdl = null;
}
return viewVO;
}
/**
* Used to update view information.
* @param userId The <code>individualId</code> of the user performing the update operation.
* @param viewVO A populated <code>ViewVO</code> object representing the view data.
*/
public void updateView(int userId, ViewVO viewVO)
{
CVDal cvdl = new CVDal(dataSource);
try {
cvdl.setSql("view.updateview");
cvdl.setString(1, viewVO.getListType());
cvdl.setString(2, viewVO.getViewName());
cvdl.setString(3, viewVO.getSortMember());
cvdl.setString(4, viewVO.getSortType());
cvdl.setInt(5, viewVO.getSearchId());
cvdl.setString(6, viewVO.getSearchType());
cvdl.setInt(7, viewVO.getNoOfRecord());
cvdl.setInt(8, viewVO.getViewId());
cvdl.executeUpdate();
cvdl.clearParameters();
cvdl.setSql("view.deleteviewcolumn");
cvdl.setInt(1, viewVO.getViewId());
cvdl.executeUpdate();
// insert into table viewcolumns
Vector columnVector = viewVO.getViewColumnVO();
if (columnVector != null) {
int sizeOfColumn = columnVector.size();
for (int i = 0; i < sizeOfColumn; i++) {
ViewColumnVO columnVO = (ViewColumnVO)columnVector.get(i);
cvdl.clearParameters();
cvdl.setSql("view.insertviewcolumn");
cvdl.setInt(1, viewVO.getViewId());
cvdl.setString(2, columnVO.getColumnName());
cvdl.setInt(3, columnVO.getColumnOrder());
cvdl.executeUpdate();
}
}
viewVO.setSearchIdName(getOwnerSearch(viewVO.getOwner(), viewVO.getListType()));
} catch (Exception e){
e.printStackTrace();
} finally {
cvdl.destroy();
cvdl = null;
}
}
/**
* Used to get all columns for a particular list
*/
public Vector getAllColumns(String strListType)
{
Vector vecResult = new Vector();
CVDal cvdal = new CVDal(dataSource);
try {
cvdal.setSql("view.getallcolumn");
cvdal.setString(1, strListType);
Collection cQuery = cvdal.executeQuery();
if (cQuery != null) {
Iterator iterator = cQuery.iterator();
while (iterator.hasNext()) {
HashMap map = (HashMap)iterator.next();
DDNameValue ddnamevalue = new DDNameValue((String)map.get("columnname"), (String)map.get("columnname"));
vecResult.add(ddnamevalue);
}
}
} catch(Exception exe) {
exe.printStackTrace();
} finally {
cvdal.destroy();
cvdal = null;
}
return vecResult;
} // end getAllColumns() method
/**
* Used to get owner related search information
* @param ownerId int
* @return searchResult Vector
*/
public Vector getOwnerSearch(int ownerId, String listType)
{
Vector searchResult = new Vector();
CVDal cvdal = new CVDal(dataSource);
try {
cvdal.setSql("view.getownersearch");
cvdal.setInt(1, ownerId);
Collection cQuery = cvdal.executeQuery();
DDNameValue ddnamevalue = new DDNameValue(0, "Select a Saved Search");
searchResult.add(ddnamevalue);
if (cQuery != null) {
Iterator iterator = cQuery.iterator();
while (iterator.hasNext()) {
HashMap map = (HashMap)iterator.next();
ddnamevalue = new DDNameValue(((Long)map.get("searchid")).intValue(), (String)map.get("searchname"));
searchResult.add(ddnamevalue);
}
}
} catch (Exception exe) {
exe.printStackTrace();
} finally {
cvdal.destroy();
cvdal = null;
}
return searchResult;
}
/**
* Returns vector containing ddnamevalue pair of id and name
* to be displayed in combo-box.
*/
public Vector getViewComboData(int userId,String primaryTableName)
{
Vector vec = new Vector();
CVDal dl = new CVDal(dataSource);
try {
dl.setSql("view.getowneruniquedefaultview");
dl.setInt(1, userId);
dl.setString(2, primaryTableName);
Collection col = (Collection)dl.executeQuery();
Iterator it = col.iterator();
String defaultViewName = "";
while (it.hasNext()) {
HashMap hm = (HashMap)it.next();
Long viewid = (Long)hm.get("defaultviewid");
String viewname = (String)hm.get("viewname");
DDNameValue dd = new DDNameValue(viewid.intValue(), viewname);
defaultViewName = viewname;
vec.add(dd);
}
dl.clearParameters();
dl.setSql("view.getownernondefaultview");
dl.setInt(1,userId);
dl.setString(2,primaryTableName);
col = (Collection)dl.executeQuery();
it = col.iterator();
while (it.hasNext()) {
HashMap hm = (HashMap)it.next();
Long viewid = (Long)hm.get("viewid");
String viewname = (String)hm.get("viewname");
DDNameValue dd = new DDNameValue(viewid.intValue(),viewname);
if (! (defaultViewName.equals(viewname))) {
vec.add(dd);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
dl.destroy();
dl = null;
}
return vec;
}
/**
* Returns vector containing user default view info
*/
public Vector getViewInfo(int userId, int viewId)
{
Vector vec = new Vector();
CVDal dl = new CVDal(dataSource);
try {
dl.setSql("view.getviewinfo");
dl.setInt(1, viewId);
Collection col = (Collection)dl.executeQuery();
Iterator it = col.iterator();
while (it.hasNext()) {
HashMap hm = (HashMap)it.next();
String sortType = (String)hm.get("sorttype");
String sortElement = (String)hm.get("sortmember");
int noOfRecords = ((Number)hm.get("noofrecords")).intValue();
int searchid = ((Number)hm.get("searchid")).intValue();
vec.add(sortType);
vec.add(sortElement);
vec.add("" + noOfRecords);
vec.add("" + searchid);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
dl.destroy();
dl = null;
}
return vec;
}
/**
* Get the Default View of the ListType and Its associated View as a Vector.
* @param listTypeList Collection of the List Type for which we must
* have to find the defaultView and the List of all the view
* which are created under that listType.
* @return defaultViewMap A map of two things. They are key Object is
* DefaultViewID will contain the information of the viewID
* key Object is ViewList will contain a Vector (ViewID and View Name).
*/
public HashMap getDefaultViews(ArrayList listTypeList)
{
HashMap defaultViewMap = new HashMap();
CVDal dl = new CVDal(dataSource);
try {
for (int i = 0; i < listTypeList.size(); i++) {
String listType = (String)listTypeList.get(i);
Vector defaultViewList = new Vector();
int defaultViewId = 0;
dl.setSql("view.admin.getdefaultviewid");
dl.setString(1, listType);
Collection colDefaultViewID = (Collection)dl.executeQuery();
if (colDefaultViewID != null) {
Iterator itViewID = colDefaultViewID.iterator();
while (itViewID.hasNext()) {
HashMap hm = (HashMap) itViewID.next();
defaultViewId = ((Number)hm.get("viewid")).intValue();
}
}
dl.clearParameters();
dl.setSql("view.getdefaultview");
dl.setString(1,listType);
Collection colViewList = (Collection)dl.executeQuery();
if (colViewList != null) {
Iterator it = colViewList.iterator();
while (it.hasNext()) {
HashMap hm = (HashMap)it.next();
int viewID = ((Number)hm.get("viewid")).intValue();
String viewName = (String)hm.get("viewname");
defaultViewList.add(new DDNameValue(viewID,viewName));
}
}
HashMap listTypeInfo = new HashMap();
listTypeInfo.put("DefaultViewID", defaultViewId + "");
listTypeInfo.put("ViewList", defaultViewList);
defaultViewMap.put(listType, listTypeInfo);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
dl.destroy();
dl = null;
}
return defaultViewMap;
}
/**
* Set the Default View of the Module to new selected ViewID.
* @param defaultViews A collection of the key as List Type
* (Module name) and Value will be the newly Set View ID.
*/
public void setDefaultView(HashMap defaultViews)
{
int viewID = 0;
String listType = "";
CVDal cvdl = new CVDal(dataSource);
try {
if (defaultViews != null) {
Set viewSet = defaultViews.keySet();
Iterator it = viewSet.iterator();
while (it.hasNext()) {
listType = (String)it.next();
String strViewID = defaultViews.get(listType).toString();
if (strViewID != null && ! strViewID.equals("")) {
viewID = Integer.parseInt(strViewID);
cvdl.setSql("view.setdefaultview");
cvdl.setString(1, String.valueOf(viewID));
cvdl.setString(2, listType);
cvdl.executeUpdate();
// This is a hack. We need to update the permissions for
// all users and change the query for the Default View
cvdl.clearParameters();
cvdl.setSql("view.setdefaultviewowner");
cvdl.setString(1, null);
cvdl.setString(2, String.valueOf(viewID));
cvdl.executeUpdate();
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
cvdl.destroy();
cvdl = null;
}
}
/**
* Returns system default viewid
*/
public int getSystemDefaultView(String listType)
{
int systemViewId = 0;
CVDal dl = new CVDal(dataSource);
try {
dl.setSql("view.getsystemdefaultview");
dl.setString(1, listType);
Collection col = (Collection)dl.executeQuery();
Iterator it = col.iterator();
while (it.hasNext()) {
HashMap hm = (HashMap)it.next();
systemViewId = ((Long)hm.get("viewid")).intValue();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
dl.destroy();
dl = null;
}
return systemViewId;
}
/**
* Returns user default viewid
*/
public int getUserDefaultView(int userId, String listType)
{
int viewId = 0;
CVDal dl = new CVDal(dataSource);
try {
dl.setSql("view.getuserdefaultview");
dl.setInt(1, userId);
dl.setString(2, listType);
Collection col = (Collection)dl.executeQuery();
Iterator it = col.iterator();
while (it.hasNext()) {
HashMap hm = (HashMap)it.next();
viewId = ((Long)hm.get("defaultviewid")).intValue();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
dl.destroy();
dl = null;
}
return viewId;
}
/**
* Returns vector containing user default column info
*/
public Vector getUserDefaultColumns(int viewId, String listType, int userId)
{
Vector vec = new Vector();
CVDal dl = new CVDal(dataSource);
try {
dl.clearParameters();
dl.setSql("view.getownerdefaultcolumn");
dl.setInt(1, viewId);
dl.setString(2, listType);
dl.setInt(3, userId);
Collection ownerColumnCollection = dl.executeQuery();
Iterator ownerColumnIterator = ownerColumnCollection.iterator();
ListView listView = new ListView(viewId);
while (ownerColumnIterator.hasNext()) {
HashMap ownerColumnHM = (HashMap)ownerColumnIterator.next();
listView.addColumnName((String)ownerColumnHM.get("columnname"));
}
vec.add(listView);
} catch (Exception e) {
e.printStackTrace();
} finally {
dl.destroy();
dl = null;
}
return vec;
}
/**
* Updates user default view
*/
public void updateUserDefaultView(int viewId, int userId, String sortType, String sortElement, int recordPerPage, String listType)
{
CVDal cvdl = new CVDal(dataSource);
try {
cvdl.setSql("view.updateuserdefaultview");
cvdl.setString(1,sortType);
cvdl.setString(2,sortElement);
cvdl.setInt(3,recordPerPage);
cvdl.setInt(4,viewId);
cvdl.setInt(5,userId);
cvdl.setString(6, listType);
cvdl.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
cvdl.destroy();
cvdl = null;
}
}
/**
* Deletes user view.
*/
public void deleteUserView(int viewId)
{
CVDal cvdl = new CVDal(dataSource);
try {
cvdl.setSql("view.deleteview");
cvdl.setInt(1, viewId);
cvdl.executeUpdate();
cvdl.clearParameters();
cvdl.setSql("view.deleteviewcolumn");
cvdl.setInt(1, viewId);
cvdl.executeUpdate();
} catch(Exception e) {
e.printStackTrace();
} finally {
cvdl.destroy();
cvdl = null;
}
}
/**
* Used to delete view information
* @param viewId int
*/
public void deleteView(int viewId)
{
CVDal cvdl = new CVDal(dataSource);
try {
cvdl.setSql("view.deleteview");
cvdl.setInt(1, viewId);
cvdl.executeUpdate();
cvdl.clearParameters();
cvdl.setSql("view.deleteviewcolumn");
cvdl.setInt(1, viewId);
cvdl.executeUpdate();
} finally {
cvdl.destroy();
cvdl = null;
}
}
/**
* Updates user sort column and order in table listpreferences and listviews
*/
public void updateUserDefaultViewSort(int viewId, String listType, String sortColumn, String sortOrder)
{
CVDal cvdl = new CVDal(dataSource);
try {
int systemDefaultViewId = getSystemDefaultView(listType);
if (systemDefaultViewId != viewId) {
cvdl.setSql("view.updatelistpreferencesort");
cvdl.setString(1, sortOrder);
cvdl.setString(2, sortColumn);
cvdl.setInt(3, viewId);
cvdl.executeUpdate();
cvdl.clearParameters();
cvdl.setSql("view.updatelistviewsort");
cvdl.setString(1, sortOrder);
cvdl.setString(2, sortColumn);
cvdl.setInt(3, viewId);
cvdl.executeUpdate();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
cvdl.destroy();
cvdl = null;
}
}
/**
* Updates user record per page in table listpreferences and listviews
*/
public void updateUserDefaultViewRRP(int viewId, String listType, int recordPerPage)
{
CVDal cvdl = new CVDal(dataSource);
try {
int systemDefaultViewId = getSystemDefaultView(listType);
if (systemDefaultViewId != viewId) {
cvdl.setSql("view.updatelistpreferencerpp");
cvdl.setInt(1, recordPerPage);
cvdl.setInt(2, viewId);
cvdl.executeUpdate();
cvdl.clearParameters();
cvdl.setSql("view.updatelistviewrpp");
cvdl.setInt(1, recordPerPage);
cvdl.setInt(2, viewId);
cvdl.executeUpdate();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
cvdl.destroy();
cvdl = null;
}
}
/**
* This simply sets the target datasource to be used for DB interaction.
* @param ds A string that contains the cannonical JNDI name of the datasource.
* @author Kevin McAllister <kevin@centraview.com>
*/
public void setDataSource(String ds) {
this.dataSource = ds;
}
}