Mapping code :Code:
<class name="com.netechinc.forms.TenderForm.QuotationDetailsSearchForm" table="works_info">
<id name="pk_work_id">
</id>
<property name="work_name" column="work_name" type="java.lang.String"/>
<property name="constituency" column="constituency" type="java.lang.String"/>
<property name="vill_panch_name" column="vill_panch_name" type="java.lang.String"/>
<property name="office" column="office" type="java.lang.String"/>
<join table="tender_details">
<subselect>
select a.tender_no,b.tender_id,TO_CHAR(a.createdate, 'DD/MM/YYYY') as tender_date,b.work_no, b.work_id,b.type,b.status,b.emd as emd_amount from tender a,tender_details b where a.pk_tender_id =b.tender_id
<!--select a.tender_no,b.tender_id,TO_CHAR(a.createdate, 'DD/MM/YYYY') as createdate,b.work_no, b.work_id,b.type,b.status,b.emd as emd_amount from tender a,tender_details b where a.pk_tender_id =b.tender_id and a.last_submission_day >= SYSDATE -->
</subselect>
<key column="work_id" />
<property name="work_id" column="work_id" type="java.lang.String" insert="false" update="false"/>
<property name="tender_id" column="tender_id" type="java.lang.String"/>
<property name="tender_no" column="tender_no" type="java.lang.String"/>
<property name="emd_amount" column="emd_amount" type="java.lang.String"/>
<property name="tender_date" column="tender_date" type="java.lang.String"/>
<property name="work_no" column="work_no" type="java.lang.String"/>
<property name="type" column="type" type="java.lang.String"/>
<property name="status" column="status" type="java.lang.String"/>
</join>
<join table="ABSTRACT" >
<subselect>
select a.work_id,a.total_amount,a.pk_abstract_id from ABSTRACT a where a.work_id not in (select work_id from tender_award)
</subselect>
<key column="work_id" />
<property name="est_amount" column="total_amount" type="java.lang.String"/>
<property name="pk_abstract_id" column="pk_abstract_id" type="java.lang.String"/>
</join>
</class>
Entity Class : Code:
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts.validator.ValidatorForm;
public class QuotationDetailsSearchForm extends ValidatorForm{
DecimalFormat Amount = new DecimalFormat("0.00");
public QuotationDetailsSearchForm() {
}
private String pk_work_id=null;
private String pk_ten_det_id=null;
private String tender_id =null;
private String tender_no =null;
private String work_name =null;
private String work_id=null;
private String work_no =null;
private String vill_panch_name =null;
private String constituency=null;
private String tender_date_from =null;
private String tender_date_to =null;
private String tender_date =null;
private String est_amount =null;
private String prnView =null;
private String item_sr_no =null;
private String type=null;
private String office =null;
private String emd_amount=null;
private String pk_abstract_id=null;
private String pk_abs_det_id = null;
private String primaryKey = null;
private String tableName = null;
private String action =null;
private String dateFields =null;
private String status=null;
public void setWork_name(String work_name) {
this.work_name = work_name;
}
public String getWork_name() {
return work_name;
}
public void setWork_no(String work_no) {
this.work_no = work_no;
}
public String getWork_no() {
return work_no;
}
public void setVill_panch_name(String vill_panch_name) {
this.vill_panch_name = vill_panch_name;
}
public String getVill_panch_name() {
return vill_panch_name;
}
public void setTender_date_from(String tender_date_from) {
this.tender_date_from = tender_date_from;
}
public String getTender_date_from() {
return tender_date_from;
}
public void setTender_date_to(String tender_date_to) {
this.tender_date_to = tender_date_to;
}
public String getTender_date_to() {
return tender_date_to;
}
public void setTender_date(String tender_date) {
this.tender_date = tender_date;
}
public String getTender_date() {
return tender_date;
}
public void setEst_amount(String est_amount) {
if (est_amount != null && !est_amount.equals(""))
this.est_amount = Amount.format(Double.parseDouble(est_amount));
else
this.est_amount = est_amount;
}
public String getEst_amount() {
return est_amount;
}
public void setPrnView(String prnView) {
this.prnView = prnView;
}
public String getPrnView() {
return prnView;
}
public void setPrimaryKey(String primaryKey) {
this.primaryKey = primaryKey;
}
public String getPrimaryKey() {
return primaryKey;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getTableName() {
return tableName;
}
public void setAction(String action) {
this.action = action;
}
public String getAction() {
return action;
}
public void setTender_id(String tender_id) {
this.tender_id = tender_id;
}
public String getTender_id() {
return tender_id;
}
public void setPk_ten_det_id(String pk_ten_det_id) {
this.pk_ten_det_id = pk_ten_det_id;
}
public String getPk_ten_det_id() {
return pk_ten_det_id;
}
public void setWork_id(String work_id) {
this.work_id = work_id;
}
public String getWork_id() {
return work_id;
}
public void setTender_no(String tender_no) {
this.tender_no = tender_no;
}
public String getTender_no() {
return tender_no;
}
public void setConstituency(String constituency) {
this.constituency = constituency;
}
public String getConstituency() {
return constituency;
}
public void setPk_work_id(String pk_work_id) {
this.pk_work_id = pk_work_id;
}
public String getPk_work_id() {
return pk_work_id;
}
public void setOffice(String office) {
this.office = office;
}
public String getOffice() {
return office;
}
public void setType(String type) {
this.type = type;
}
public String getType() {
return type;
}
public void setDateFields(String dateFields) {
this.dateFields = dateFields;
}
public String getDateFields() {
return dateFields;
}
public void setEmd_amount(String emd_amount) {
if (emd_amount != null && !emd_amount.equals(""))
this.emd_amount = Amount.format(Double.parseDouble(emd_amount));
else
this.emd_amount = emd_amount;
}
public String getEmd_amount() {
return emd_amount;
}
public void setPk_abstract_id(String pk_abstract_id) {
this.pk_abstract_id = pk_abstract_id;
}
public String getPk_abstract_id() {
return pk_abstract_id;
}
public void setStatus(String status) {
this.status = status;
}
public String getStatus() {
return status;
}
public void setPk_abs_det_id(String pk_abs_det_id) {
this.pk_abs_det_id = pk_abs_det_id;
}
public String getPk_abs_det_id() {
return pk_abs_det_id;
}
public void setItem_sr_no(String item_sr_no) {
this.item_sr_no = item_sr_no;
}
public String getItem_sr_no() {
return item_sr_no;
}
}
Business Class:Code:
public List search(SessionFactory sessionFactory, ActionForm form) {
List searchresult = null;
try {
AlterSession(session);
GeneralUtils webutil = new GeneralUtils();
HashMap temp = (HashMap)PropertyUtils.describe(form);
HashMap params = webutil.validateformMap(temp);
session = sessionFactory.openSession();
AlterSession(session);
Criteria crit = session.createCriteria(form.getClass());
traceLogger.info("Search Result HashMap ==>" + params);
//First Getting Date Field
String dateFields = getS(params, "dateFields");
String fieldName = null;
String[] dateList = null;
String startTag = "_from";
String endTag = "_to";
String startDate = null;
String endDate = null;
params.remove("tableName");
params.remove("action");
if (dateFields != null) {
dateList = dateFields.split(",");
for (int i = 0; i < dateList.length; i++) {
fieldName = dateList[i];
String tempFieldname = fieldName;
traceLogger.info("tempFieldname " + tempFieldname);
startDate = getS(params, tempFieldname + startTag);
endDate = getS(params, tempFieldname + endTag);
traceLogger.info("startDate " + startDate);
traceLogger.info("endDate " + endDate);
params.remove(tempFieldname + startTag);
params.remove(tempFieldname + endTag);
if (startDate != null && endDate != null) {
if (startDate.length() == 10 &&
endDate.length() == 10) {
if(tempFieldname!=null && !tempFieldname.equalsIgnoreCase("") && tempFieldname.equalsIgnoreCase("createdate")){
crit.add(Restrictions.between(tempFieldname, startDate, endDate));
}
else{
//crit.add(Expression.sql("TO_DATE("+tempFieldname+",'DD/MM/YYYY') between '"+startDate+"' and '"+endDate+"'"));
crit.add(Restrictions.sqlRestriction("TO_DATE("+tempFieldname+",'DD/MM/YYYY') between '"+startDate+"' and '"+endDate+"'"));
}
}
}
}
}
params.remove("dateFields");
// Get Order By Clause
String orderBy = "";
if (getS(params, "orderBy") != null) {
orderBy = getS(params, "orderBy");
crit.addOrder(Order.asc(orderBy));
}
params.remove("orderBy");
params.remove("selTender");
params.remove("primaryKey");
params.remove("ad_details");
Iterator columns = params.keySet().iterator();
String columnName, value;
while (columns.hasNext()) {
columnName = (String)columns.next();
traceLogger.info("Column Name xxx ==>" + columnName);
// System.out.println(columnName);
if (getS(params, columnName) != null &&
(getS(params, columnName)).length() > 0) {
traceLogger.info("Column Name ==>" + columnName);
value = getS(params, columnName);
traceLogger.info("value ==>" + value);
if (value != null) {
if (value.indexOf("'") != -1)
value = value.replaceAll("'", "'||chr(39)||'");
}
if (value.substring(0, 1).equals("!")) {
crit.add(Restrictions.ne(columnName,
value.substring(1, value.length())));
//fieldClause += "("+columnName +" != '"+ value.substring(1, value.length()) + "')";
}
else if (value.substring(0, 1).equals(">")) {
crit.add(Restrictions.gt(columnName,
value.substring(1, value.length())));
//fieldClause += "("+columnName +" > '"+value.substring(1,value.length()) + "')";
} else if (value.substring(0, 1).equals("<")) {
crit.add(Restrictions.le(columnName,
value.substring(1, value.length())));
//fieldClause += "("+columnName +" < '"+value.substring(1,value.length()) + "')";
} else if (value.indexOf("%") >= 0) {
crit.add(Restrictions.ilike(columnName, value));
} else {
crit.add(Restrictions.eq(columnName, value));
}
}
}
traceLogger.info("Search Result HashMap 2 ==>" + params);
// Get Order By Clause
searchresult = crit.list();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
try {
session.flush();
} catch (Exception e) {
e.printStackTrace();
}
session.close();
} catch (JDBCException e) {
e.printStackTrace();
}
} //Finally
return searchresult;
} //End of search