/*
* eGov suite of products aim to improve the internal efficiency,transparency,
* accountability and the service delivery of the government organizations.
*
* Copyright (C) <2015> eGovernments Foundation
*
* The updated version of eGov suite of products as by eGovernments Foundation
* is available at http://www.egovernments.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/ or
* http://www.gnu.org/licenses/gpl.html .
*
* In addition to the terms of the GPL license to be adhered to in using this
* program, the following additional terms are to be complied with:
*
* 1) All versions of this program, verbatim or modified must carry this
* Legal Notice.
*
* 2) Any misrepresentation of the origin of the material is prohibited. It
* is required that all modified versions of this material be marked in
* reasonable ways as different from the original version.
*
* 3) This license does not grant any rights to any user of the program
* with regards to rights under trademark law for use of the trade names
* or trademarks of eGovernments Foundation.
*
* In case of any queries, you can reach eGovernments Foundation at contact@egovernments.org.
*/
/*
* Created on Mar 4, 2005
* @author pushpendra.singh
*/
package com.exilant.eGov.src.domain;
import com.exilant.eGov.src.common.EGovernCommon;
import com.exilant.exility.common.TaskFailedException;
import com.exilant.exility.updateservice.PrimaryKeyGenerator;
import org.apache.log4j.Logger;
import org.egov.infra.admin.master.entity.AppConfigValues;
import org.egov.infra.admin.master.service.AppConfigValueService;
import org.egov.infstr.services.PersistenceService;
import org.egov.infstr.utils.EgovMasterDataCaching;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.transaction.annotation.Transactional;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
@Transactional(readOnly = true)
public class ChartOfAccts {
private String id = null;
private String glCode = null;
private String name = null;
private String description = null;
private String isActiveForPosting = "0";
private String parentId = null;
private String lastModified = "";
private String modifiedBy = null;
private String created = "";
private String purposeid = null;
private String operation = null;
private String type = null;
private String classname = "0";
private String classification = null;
private String functionreqd = "0";
private String scheduleId = null;
private Integer FIEscheduleId = null;
private String FIEoperation = null;
private String receiptscheduleid = null;
private String receiptoperation = null;
private String paymentscheduleid = null;
private String paymentoperation = null;
private String budgetCheckReqd = null;
private boolean isId = false, isField = false;
private static final Logger LOGGER = Logger.getLogger(ChartOfAccts.class);
@Autowired
@Qualifier("persistenceService")
private PersistenceService persistenceService;
@Autowired
private AppConfigValueService appConfigValuesService;
@Autowired
private EgovMasterDataCaching masterDataCache;
private @Autowired EGovernCommon eGovernCommon;
private final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy", Locale
.getDefault());
private final SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy",
Locale.getDefault());
public void setId(final String aId) {
id = aId;
isId = true;
}
public String getId() {
return id;
}
public void setGLCode(final String aGLCode) {
glCode = aGLCode;
isField = true;
}
public void setName(final String aName) {
name = aName;
isField = true;
}
public void setDescription(final String aDescription) {
description = aDescription;
isField = true;
}
public void setIsActiveForPosting(final String aIsActiveForPosting) {
isActiveForPosting = aIsActiveForPosting;
isField = true;
}
public void setParentId(final String aParentId) {
parentId = aParentId;
isField = true;
}
public void setLastModified(final String aLastModified) {
lastModified = aLastModified;
isField = true;
}
public void setModifiedBy(final String aModifiedBy) {
modifiedBy = aModifiedBy;
isField = true;
}
public void setCreated(final String aCreated) {
created = aCreated;
isField = true;
}
public void setOperation(final String aOperation) {
operation = aOperation;
isField = true;
}
public void setType(final String aType) {
type = aType;
isField = true;
}
public void setClass(final String aclass) {
classname = aclass;
isField = true;
}
public void setPurposeId(final String aPurposeId) {
purposeid = aPurposeId;
isField = true;
}
public void setFunctionReqd(final String aFunctionReqd) {
functionreqd = aFunctionReqd;
isField = true;
}
public void setClassification(final String aClassification) {
classification = aClassification;
isField = true;
}
public void setScheduleId(final String aScheduleId) {
scheduleId = aScheduleId;
isField = true;
}
public void setReceiptscheduleid(final String aReceiptscheduleid) {
receiptscheduleid = aReceiptscheduleid;
isField = true;
}
public void setReceiptoperation(final String aReceiptoperation) {
receiptoperation = aReceiptoperation;
isField = true;
}
public void setPaymentscheduleid(final String aPaymentscheduleid) {
paymentscheduleid = aPaymentscheduleid;
isField = true;
}
public void setPaymentoperation(final String aPaymentoperation) {
paymentoperation = aPaymentoperation;
isField = true;
}
public void setBudgetCheckReqd(final String aBudgetCheckReqd) {
budgetCheckReqd = aBudgetCheckReqd;
isField = true;
}
public Integer getFIEscheduleId() {
return FIEscheduleId;
}
public void setFIEscheduleId(final int escheduleId) {
FIEscheduleId = escheduleId;
isField = true;
}
public String getFIEoperation() {
return FIEoperation;
}
public void setFIEoperation(final String eoperation) {
FIEoperation = eoperation;
isField = true;
}
@Transactional
public void insert(final Connection connection) throws SQLException,
TaskFailedException {
created = new SimpleDateFormat("dd/mm/yyyy").format(new Date());
try {
created = formatter.format(sdf.parse(created));
masterDataCache.removeFromCache(
"egi-activeCoaCodes");
masterDataCache.removeFromCache("egi-coaCodes");
masterDataCache.removeFromCache(
"egi-chartOfAccounts");
masterDataCache.removeFromCache(
"egi-coaPurposeId10");
masterDataCache.removeFromCache(
"egi-accountCodes");
masterDataCache.removeFromCache(
"egi-liabilityCOACodes");
masterDataCache.removeFromCache(
"egi-coaCodesForLiability");
setLastModified(created);
setId(String.valueOf(PrimaryKeyGenerator
.getNextKey("ChartOfAccounts")));
final String insertQuery = "INSERT INTO ChartOfAccounts (id, glCode, name, description, isActiveForPosting, "
+ " parentId, lastModified, modifiedBy, "
+ "created, purposeid,functionreqd, operation,type,classification,class,budgetCheckReq,majorcode)"
+ "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
if (LOGGER.isDebugEnabled())
LOGGER.debug(insertQuery);
persistenceService.getSession().createSQLQuery(insertQuery)
.setInteger(0, Integer.parseInt(id))
.setString(1, removeSingleQuotes(glCode))
.setString(2, removeSingleQuotes(name))
.setString(3, removeSingleQuotes(description))
.setString(4, removeSingleQuotes(isActiveForPosting))
.setString(5, removeSingleQuotes(parentId))
.setString(6, removeSingleQuotes(lastModified))
.setString(7, removeSingleQuotes(modifiedBy))
.setString(8, removeSingleQuotes(created))
.setString(9, removeSingleQuotes(purposeid))
.setString(10, removeSingleQuotes(functionreqd))
.setString(11, removeSingleQuotes(operation))
.setString(12, removeSingleQuotes(type))
.setString(13, removeSingleQuotes(classification))
.setString(14, removeSingleQuotes(classname))
.setString(15, removeSingleQuotes(budgetCheckReqd))
.setString(16, removeSingleQuotes(getMajorCode(glCode))).executeUpdate();
} catch (final HibernateException e) {
LOGGER.error("Exception occured while getting the data " + e.getMessage(), new HibernateException(e.getMessage()));
} catch (final Exception e) {
LOGGER.error("Exception occured while getting the data " + e.getMessage(), new Exception(e.getMessage()));
}
}
private String removeSingleQuotes(String obj) {
if (obj != null)
obj = obj.replaceAll("'", "");
return obj;
}
/**
* glcode contains comma also
*
* @param glcode
* @return
* @throws TaskFailedException
*/
private String getMajorCode(final String glcode) throws TaskFailedException {
final List<AppConfigValues> appList = appConfigValuesService.getConfigValuesByModuleAndKey("EGF",
"coa_majorcode_length");
if (appList == null || appList.isEmpty())
throw new TaskFailedException(
"coa_majorcode_length is not defined in appconfig");
final int majorcodelength = Integer.valueOf(appList.get(0).getValue());
final String glcode1 = glcode.substring(0, glcode.length());
return glcode1.length() >= majorcodelength ? "'"
+ glcode1.substring(0, majorcodelength) + "'" : "''";
}
@Transactional
public void update() throws SQLException,
TaskFailedException {
if (isId && isField)
newUpdate();
}
public void newUpdate() throws TaskFailedException,
SQLException {
created = eGovernCommon.getCurrentDate();
Query pstmt = null;
try {
created = formatter.format(sdf.parse(created));
} catch (final ParseException parseExp) {
if (LOGGER.isDebugEnabled())
LOGGER.debug(parseExp.getMessage(), parseExp);
}
setCreated(created);
setLastModified(created);
final StringBuilder query = new StringBuilder(500);
query.append("update ChartOfAccounts set ");
if (glCode != null)
query.append("glCode=?,");
if (name != null)
query.append("name=?,");
if (description != null)
query.append("description=?,");
if (isActiveForPosting != null)
query.append("ISACTIVEFORPOSTING=?,");
if (parentId != null)
query.append("PARENTID=?,");
if (lastModified != null)
query.append("LASTMODIFIED=?,");
if (modifiedBy != null)
query.append("MODIFIEDBY=?,");
if (created != null)
query.append("CREATED=?,");
if (purposeid != null)
query.append("PURPOSEID=?,");
if (operation != null)
query.append("OPERATION=?,");
if (FIEoperation != null)
query.append("FIEOPERATION=?,");
if (type != null)
query.append("type=?,");
if (classname != null)
query.append("class=?,");
if (classification != null)
query.append("CLASSIFICATION=?,");
if (functionreqd != null)
query.append("FUNCTIONREQD=?,");
if (scheduleId != null)
query.append("SCHEDULEID=?,");
if (FIEscheduleId != null)
query.append("FIEscheduleId=?,");
if (receiptscheduleid != null)
query.append("RECEIPTSCHEDULEID=?,");
if (receiptoperation != null)
query.append("RECEIPTOPERATION=?,");
if (paymentscheduleid != null)
query.append("PAYMENTSCHEDULEID=?,");
if (paymentoperation != null)
query.append("PAYMENTOPERATION=?,");
if (budgetCheckReqd != null)
query.append("BUDGETCHECKREQ=?,");
final int lastIndexOfComma = query.lastIndexOf(",");
query.deleteCharAt(lastIndexOfComma);
query.append(" where id=?");
try {
int i = 1;
pstmt = persistenceService.getSession().createSQLQuery(query.toString());
if (glCode != null)
pstmt.setString(i++, glCode);
if (name != null)
pstmt.setString(i++, name);
if (description != null)
pstmt.setString(i++, description);
if (isActiveForPosting != null)
pstmt.setString(i++, isActiveForPosting);
if (parentId != null)
pstmt.setString(i++, parentId);
if (lastModified != null)
pstmt.setString(i++, lastModified);
if (modifiedBy != null)
pstmt.setString(i++, modifiedBy);
if (created != null)
pstmt.setString(i++, created);
if (purposeid != null)
pstmt.setString(i++, purposeid);
if (operation != null)
pstmt.setString(i++, operation);
if (FIEoperation != null)
pstmt.setString(i++, FIEoperation);
if (type != null)
pstmt.setString(i++, type);
if (classname != null)
pstmt.setString(i++, classname);
if (classification != null)
pstmt.setString(i++, classification);
if (functionreqd != null)
pstmt.setString(i++, functionreqd);
if (scheduleId != null)
pstmt.setString(i++, scheduleId);
if (FIEscheduleId != null)
pstmt.setInteger(i++, FIEscheduleId);
if (receiptscheduleid != null)
pstmt.setString(i++, receiptscheduleid);
if (receiptoperation != null)
pstmt.setString(i++, receiptoperation);
if (paymentscheduleid != null)
pstmt.setString(i++, paymentscheduleid);
if (paymentoperation != null)
pstmt.setString(i++, paymentoperation);
if (budgetCheckReqd != null)
pstmt.setString(i++, budgetCheckReqd);
pstmt.setString(i++, id);
pstmt.executeUpdate();
} catch (final HibernateException e) {
LOGGER.error("Exception occured while getting the data " + e.getMessage(), new HibernateException(e.getMessage()));
} catch (final Exception e) {
LOGGER.error("Exception occured while getting the data " + e.getMessage(), new Exception(e.getMessage()));
}
}
}