Automatically Update DataBase Value at Time of validation
shwetank Oct 13, 2010 8:00 AMHi , I want to validate some text fields at before persist / merge
But form show validate error and also update database value .
This Function use to render data Model Panel and also fetch the data from database and show into Data Table
@SuppressWarnings("unchecked")
@Begin(join = true,flushMode=FlushModeType.MANUAL)
public void loadMachineryListForRH() {
log.info("Entering getMachineryList() method");
List<Machinery> machList = new ArrayList<Machinery>(0);
machList = tenantEntityManager.createQuery(
"select mc from Machinery mc where mc.flgDeleted = 0"
+ "and mc.shipMaster.ishipId="
+ Contexts.getSessionContext().get("shipId"))
.getResultList();
tenantEntityManager.flush();
machineryRList = machList;
prevMachineryRList = new ArrayList<Machinery>(0);
for (Machinery mc : machList) {
Machinery m = new Machinery();
m.setImachineryId(mc.getImachineryId());
m.setIrunningHours(mc.getIrunningHours());
prevMachineryRList.add(m);
}
showOverlay = true;
log.info("Exiting getMachineryList() method with size of list=="
+ machineryRList.size());
}And This Function Use For Merging
@SuppressWarnings("unchecked")
@Begin(join = true,flushMode=FlushModeType.MANUAL)
public void persistRuningHoursForAll() {
log.info("Enter in persist running hours For All method");
String numeric_regex = "[0-9]*";
String machineryName = "";
Integer oldRunningHrs = 0;
Integer newRunningHrs = 0;
SeamResourceBundle srb = new SeamResourceBundle();
int DISABLE_EDIT_JOB_DONE_DAYS = Integer.parseInt(srb
.getString("DISABLE_EDIT_JOB_DONE_DAYS"));
Date today = new Date();
boolean validate = false;
boolean subValidate = false;
for (Machinery mach : machineryRList) {
for (Machinery prevMach : prevMachineryRList) {
if (prevMach.getImachineryId() == mach.getImachineryId()) {
if (mach.getIrunningHours() < prevMach.getIrunningHours()) {
machineryName = mach.getStrName();
oldRunningHrs = prevMach.getIrunningHours();
newRunningHrs = mach.getIrunningHours();
int days = compareToDate(mach.getDtUpdated(), today);
if(days > DISABLE_EDIT_JOB_DONE_DAYS){
facesMessages.addToControl(
"addRunningHoursPanel",
"MacineryName"+machineryName+" We can not decrease running hrs after seven days");
validate = true;
break;
}
}
}
}
}
if (!validate){
for (Machinery mach : machineryRList) {
log.info("Machinery running hours" + mach.getIrunningHours());
if (mach.getIrunningHours() != null) {
if (!(mach.getIrunningHours().toString()
.matches(numeric_regex))) {
facesMessages.addToControlFromResourceBundle(
"addRunningHoursPanel", "validator.numeric");
subValidate = true;
break;
}
}
if (mach.getIrunningHours() == null) {
mach.setIrunningHours(0);
tenantEntityManager.merge(mach);
tenantEntityManager.flush();
}
for (Machinery prevMach : prevMachineryRList) {
if (mach.getIrunningHours() != prevMach.getIrunningHours()) {
mach.setDtUpdated(new Date());
}
if (prevMach.getImachineryId() == mach.getImachineryId()) {
int componentRh = mach.getIrunningHours()
- prevMach.getIrunningHours();
String compQl = " select comp from Component comp where comp.flgIsInUse = 1 and "
+ " comp.machinery.imachineryId = "
+ mach.getImachineryId()
+ "and comp.shipMaster.ishipId="
+ Contexts.getSessionContext().get("shipId");
List<Component> compList = tenantEntityManager
.createQuery(compQl).getResultList();
for (Component cmp : compList) {
cmp.setIrunningHours(cmp.getIrunningHours()
+ componentRh);
tenantEntityManager.merge(cmp);
tenantEntityManager.flush();
}
}
}
mach.setFlgIsDirty(2);
tenantEntityManager.merge(mach);
tenantEntityManager.flush();
this.showOverlay = false;
}
}
if(!validate && !subValidate){
this.status = "due";
setStatus("due");
facesMessages
.addFromResourceBundle("message.runninghrs.updated.successful");
fetchMaintenanceJobsTypeDetails();
}
}Thanks In Advance ...........