Tuesday, 17 July 2012

DOJO 1.7: Compound or Composite Key in DataGrid + JsonRestStore

Isu: 

Penggunaan id komposit pada property idAttribute, penggunaan idAttribute yang salah akan menyebabkan data yang berulang dipaparkan.


Framework: 

Spring 3 + DOJO 1.7 + JPA


dojox.data.JsonRestStore
dojox.grid.DataGrid


Penyelesaian:

1. Gunakan fungsi toJson() dalam kelas domain/POJO/model.


import flexjson.JSONSerializer;


...



public String toJson() {
     return new JSONSerializer().exclude("*.class").serialize(this);
}




2. Umpukkan nilai kepada property idAttribute. Contoh:




var poStore = new JsonRestStore({
target: "${listUrl}/ajaxUnits/${blockId}?", 
idAttribute:"id.toJson" , 
syncMode: true });

Dalam contoh di atas, id komposit itu dinamakan sebagai "id" di dalam kelas domain/POJO/objek dengan getter dan setter-nya. Contoh:


@Valid
@EmbeddedId
private CollegeHouseMainPK id;



public CollegeHouseMainPK getId() {
return this.id;
}


public void setId(CollegeHouseMainPK id) {
this.id = id;
}



Keyword yang digunakan untuk penyelesaian ini:


  • prevent duplicate data in datagrid
  • JsonRestStore idAttribute composite key
  • JsonRestStore identifier
  • redundant json data dojo datagrid

Penasihat

  • Osman Sulaiman, IKCM Sdn Bhd.







Monday, 16 July 2012

DOJO 1.7: Child properties access on JSON + DataGrid

Katakan kita diberi data JSON:

[{"id":{"chmCompanyCode":"U","chmCollegeCode":"BMI","chmBlockCode":"SB-A","chmHouseCode":"1F-18"},"chmActive":"Y","chmCapacity":4,"chmCurCapacity":4,"chmFreeCapacity":0,"chmHouseDesc":"LEVEL 1","chmLevel":1}]


Untuk akses id.chmHouseCode dan set pada layout untuk datagrid:

gridLayout = [
{ name: "id", field: "id"},
{ name: "Code", field: "_item", formatter:function(item){return item.id.chmHouseCode;}},
{ name: "Name", field: "chmHouseDesc"},
{ name: "Capacity", field: "chmCapacity"}];


Cuma ubah BLUE FONT sahaja, yang lain maintain.


Masalahnya, tak boleh sorting apabila gunakan _item atau get.

Friday, 13 July 2012

DOJO 1.7: DataGrid + JsonRestStore

Framework: SPRING 3.06 + DOJO 1.7

<script type="text/javascript">
function prepareDatagrid(){
require(['dojox/grid/DataGrid', 'dojox/data/JsonRestStore'],
   function(DataGrid, JsonRestStore)
{

console.log("showCollegeBlock.jsp");
console.log("${urlCollegeHouses}");

gridLayout = [
             { name: 'Code', field: 'id.chmHouseCode', editable: true},
             { name: 'Name', field: 'chmHouseDesc'},
             { name: 'Capacity', field: 'chmCapacity'}];
           

var poStore = new JsonRestStore({target: "${urlCollegeHouses}/ajaxUnits/${hostelId}?" });

// use the query results returned from the server
/*create a new grid*/
   var grid = new DataGrid({
       id: 'grid',
       store: poStore,
       structure: gridLayout,
       rowSelector: '20px'});


   /*append the new grid to the div*/
   grid.placeAt("gridDiv");
   /*Call startup() to render the grid*/
   grid.startup();
 
});}
</script>

Selain itu boleh guna kaedah manual fetching:


poStore.fetch({
onComplete: function(items){
grid = new dojox.grid.DataGrid({
store: poStore,
items: items,
structure: gridLayout
}, "gridDiv");
  
grid.startup();
}
});

Monday, 9 July 2012

SPRING 3.06: Form tidak binding ke domain

Framewok: SPRING 3.06
DB: MySQL 5
Bahasa: Java 6


Isu:

Value yang dihantar ke dalam form (JSP) menggunakan HIDDEN tag tidak bind automatik ke domain.


Punca:

  • 2012-07-09: Tiada setter untuk property yang terlibat pada domain.

Wednesday, 15 February 2012

Ibatis : Retrieve value from Oracle DB's function

SQL Mapping
 <parameterMap class="map" id="getJobDescParam">  
      <parameter property="p_job_code" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>  
 </parameterMap>  
 <select id="getJobDesc" parameterMap="getJobDescParam" resultClass="java.lang.String">  
      select hr_util.get_job_desc(?) from dual  
 </select>  
Contoh kod DAO
      public String getJobDesc(String jobCode)   
      {  
           String returnString;  
           Map<String, Object> map = new HashMap<String, Object>();  
           map.put("p_job_code", jobCode);  
           // Reference com.icms.biz.dao.ibatis.maps.StaffMain.xml  
           returnString = (String)getSqlMapClientTemplate().queryForObject("getJobDesc",map);  
           if(StringUtils.isEmpty(returnString)){  
                returnString = "-";  
           }  
           return returnString;  
      }  

Thursday, 3 September 2009

FRM-41214 : Unable to run report


Recently I found FRM-41214 error while try to run report from Form. All of them work well on Report Builder.
So, I assume there are sumtin wrong with my LOC on forms.
I found source of the problem, which r I send date parameter as string with conversion/cast. [to_char(:date_from,'dd-mm-rrrr')]
So, u may send date as string but never ever try to cast it to string/char.
Well, thats sure means we cant send wrong parameter type.