Friday, June 13, 2008

Daily Food Menu - Vegetarian (Some Gujarati Dishes)

Breakfast

  1. Bataka Poha
  2. Upma
  3. Idli & Vada
  4. French Toast
  5. Bread Omlet
  6. Bread & Egg Poch
  7. Bread Butter
  8. Cheese Sandwich
  9. Paranthas - Aloo, Cauliflower, Mooli, Dal, Methi, Onions, Paneer, Salty Masala

Evening Snacks

  1. Bhel
  2. Pani Puri
  3. Pav Bhaji
  4. Green Sandwich
  5. Samosa
  6. Aloo Tikki
  7. Dabeli
  8. Vada Pav
  9. Batata Vada (Gota)
  10. Soya Kabab (Sanjeev Kapoor)

Starters

  1. Tomato Soup
  2. Hot N Sour Soup
  3. Spring Roll

Breads

  1. Roti
  2. Puri
  3. Bhatura
  4. Makki ki Roti
  5. Rotla (Bajri)
  6. Bhakhri
  7. Missi Roti
  8. Naan
  9. Poodla
  10. Thepla & Suki Bhaji

Main course

  1. Dahi Vada
  2. Sev Usal
  3. Fried Gobi
  4. Guvar
  5. Tomatoes
  6. Jeera Aloo
  7. Alu Gobi
  8. Alu Beans
  9. Greeen Beans
  10. Tindoora
  11. Bhindi
  12. Suki Bhaji
  13. Baingan Bharta
  14. Egg Curry
  15. Egg Kheema
  16. Mixed Veg (Corn, Green Peas, Capcicum, Potatoes, Cauliflower, Carrot, Green Beans)
  17. Chana (Black)
  18. Moong
  19. Chole
  20. Dosa & Uttapam
  21. Mixed Dal
  22. Math
  23. Rajma
  24. Dal (Arhar) (Gujarati Dal)
  25. Dal dhokli (Gujarati)
  26. Masoor Dal
  27. Dal Makhani
  28. Kadai Paneer
  29. Shahi Paneer
  30. Chili Paneer

Rice

  1. White Rice
  2. Peas Pulav
  3. Vegetable Biryani
  4. Khichdi - Moong Dal, Masala
  5. Bisibele Bhat
  6. Puliogre
  7. Lemon Rice
  8. Tomato Rice
  9. Egg Rice
  10. Fried Rice
  11. Vagharela Bhat (Left over rice with Oil, Onions & Chilis)

Wednesday, April 23, 2008

How to setup development environment using Eclipse

1. Install Eclipse IDE for JavaEE Developers with WTP support (3.3.x)
2. Download JRE and Application server separately
3. Make sure that Eclipse is pointing to correct Target Run Time (JRE)
4. Add Servers using Window> Show View> Servers > Add > New Server
5. Create a New Web Project using File> New> Project> Web Project
6. Link source folders if source already exist or copy it to default src folder created in step 3
7. Add all 3rd party libraries e.g. Spring, Struts, Hibernate, Log4j
8. Add Ant build script using


Find references at " http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/ "

Monday, January 21, 2008

Create XML doc from database and transform the same to any given template in XSLT

//Use this piece of code to generate XML file which has HEADER and BODY parts.
//Body can have many rows identified by "TR" elements
//Each TR element can have many columns e.g. CL1, CL2, CL3

The code is written using JAXP and SAX. The following imports needs to be included

import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;

import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

----------------------------------------------------------------------------

File xmlFile = new File("temp.xml");
OutputStream inputXML = new FileOutputStream(xmlFile);
StreamResult streamResult = new StreamResult(inputXML);
SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory.newInstance();

// SAX2.0 ContentHandler.
TransformerHandler hd = tf.newTransformerHandler();
Transformer serializer = hd.getTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
hd.setResult(streamResult);
hd.startDocument();
AttributesImpl atts = new AttributesImpl();

// DOCUMENT Element
hd.startElement("", "", DOCUMENT, atts);

// Generate Header Row Elements
hd.startElement("", "", HEADER, atts);
hd.startElement("", "", HCL1, atts);
hd.characters(header.toCharArray(), 0, header.length());
hd.endElement("", "", HCL1);

hd.startElement("", "", HCL2, atts);
hd.characters(todayStr.toCharArray(), 0, todayStr.length());
hd.endElement("", "", HCL2);

hd.startElement("", "", HCL3, atts);
hd.characters(lastHdr.toCharArray(), 0, lastHdr.length());
hd.endElement("", "", HCL3);
hd.endElement("", "", HEADER);

// Generate actual data Elements within Body Elements
hd.startElement("", "", BODY, atts);

//Put this code into a loop - for or while till u have row/tuples from DB
// Content Row Elements
hd.startElement("", "", TR, atts);

hd.startElement("", "", CL1, atts);
hd.characters("ABC".toCharArray(), 0, "ABC".length());
hd.endElement("", "", CL1);

hd.startElement("", "", CL2, atts);
hd.characters("XYZ".toCharArray(), 0,"XYZ".length());
hd.endElement("", "", CL2);

hd.startElement("", "", CL3, atts);
hd.characters("PQR".toCharArray(), 0,"PQR".length());
hd.endElement("", "", CL3);
hd.endElement("", "", TR);
//Loop ends here

hd.endElement("", "", BODY);

hd.endElement("", "", DOCUMENT);
hd.endDocument();

//Now the following piece of code transforms above generated XML file into Output file with given template file

Source xmlSource = new StreamSource(xmlFile);
File finalOutput = new File("Output.doc");
OutputStream out = new FileOutputStream(finalOutput);
Result result = new StreamResult(out);
TransformerFactory transFact = TransformerFactory.newInstance();
Transformer trans;
InputStream xsltFile = null;
xsltFile = getXSLTInput(); //Get your input template file
Source xsltSource = new StreamSource(xsltFile);
trans = transFact.newTransformer(xsltSource);
trans.transform(xmlSource, result);


Function to read input template file as class via classLoader

private InputStream getXSLTInput() {
InputStream xsltFile = null;
ClassLoader cl = CreateXMLDoc.class.getClassLoader();
if (cl != null) {
xsltFile = cl.getResourceAsStream(XSLTTemplateFile.xsl);
}
if (xsltFile == null) {
cl = Thread.currentThread().getContextClassLoader();
if (cl != null) {
xsltFile = cl.getResourceAsStream(XSLTTemplateFile.xsl);
}
}
if (xsltFile == null) {
cl = ClassLoader.getSystemClassLoader();
if (cl != null) {
xsltFile = cl.getResourceAsStream(XSLTTemplateFile.xsl);
}
}
return xsltFile;
}

Ajax Components

1) Div pop-up relative to link.
divId - Id for the Div to be used as popup
lnk - Id for the link to be used as reference for popup position
xOffset - xOffset from the topleft of the ref link
yOffset - yOffset from the topleft of the ref link
function showPopUp(dispatch,lnk,xOffset, yOffset)

function showPopUp(divId,lnk,xOffset, yOffset)
{
var el = document.getElementById(lnk);
var ol=el.offsetLeft;
while ((el=el.offsetParent) != null) { ol += el.offsetLeft; }
var el = document.getElementById(lnk);
var ot=el.offsetTop;
while((el=el.offsetParent) != null) { ot += el.offsetTop; }

var x = ol+xOffset;
var y = ot+yOffset;
showMe(divId,x,y);
}


2) Div pop-up absolute.
divId - Id for the Div to be used as popup
xOffset - xOffset from the topleft
yOffset - yOffset from the topleft
function showMe(dispatch,xOffset,yOffset)

function showMe(divId,xOffset,yOffset){
var elm = document.getElementById(divId);
elm.style.top=yOffset;
elm.style.left=xOffset;
elm.style.display="";
elm.style.zIndex = 200;

}

3) Hide the div .
divid - Id for the div.
function hideMe(divid)

function hideMe(divid){
document.getElementById(divid).style.display="none";
}

4) Make an ajax request
url - URL of the server resource
data - Data to be used in case of post else empty string. Data passed is in the form of querystring.
method - get or post for ajax request submission
function serverData(url,data,method)

function serverData(url,data,method)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}

try {
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open(method,url,true);
xmlHttp.send(data);
showInProcess()
} catch (e) {
alert("Error Sending the Ajax Request."+e);
document.getElementById('inProcess').style.display = "none";
document.getElementById('processStatus').style.display = "none";
document.getElementById('result').style.display = "none";
}
}

5) Default response method which calls onAjaxResponse(responseText) on xmlHttp.readyState==4 and http_request.status == 200
function stateChanged()

function stateChanged()
{
if (xmlHttp.readyState==4)
{
if (xmlHttp.status == 200) {
onAjaxResponse(xmlHttp.responseText);
document.getElementById('inProcess').style.display = "none";
document.getElementById('processStatus').style.display = "none";
document.getElementById('result').style.display = "none";
} else {
alert('There was a problem with the request.');
document.getElementById('inProcess').style.display = "none";
document.getElementById('processStatus').style.display = "none";
document.getElementById('result').style.display = "none";
}
}
}

6) Gets the XmlHttp object based on the browser
function GetXmlHttpObject()

function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}

7) Shows the inProcessScreen
function showInProcess()

function showInProcess()
{
screenheight=window.screen.height;
screenwidth=window.screen.width;

document.getElementById('processStatus').style.top=(screenheight/2)-150;
document.getElementById('processStatus').style.left=screenwidth/2-100;
document.getElementById('processStatus').style.zIndex = 150;
document.getElementById('processStatus').style.display = "";


if (window.innerHeight && window.scrollMaxY) {// Firefox
screenheight = window.innerHeight + window.scrollMaxY;
screenwidth = window.innerWidth + window.scrollMaxX;
}
else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
screenheight = document.body.scrollHeight;
screenwidth = document.body.scrollWidth;
} else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
screenheight = document.body.offsetHeight;
screenwidth = document.body.offsetWidth;
}
document.getElementById('inProcess').style.top=0;
document.getElementById('inProcess').style.left=0;
document.getElementById('inProcess').style.height=screenheight;
document.getElementById('inProcess').style.width=screenwidth;

document.getElementById('inProcess').style.zIndex = 100;
document.getElementById('inProcess').style.display = "";

}

8) Hides the inProcessScreen
function hideInProcess()

function hideInProcess()
{
document.getElementById('processStatus').style.display = "none";
document.getElementById('inProcess').style.display = "none";
}

9) Initializes the in process screen
processingColor - Color for the processing text message
filmColor - Color for the processing film to protect parent screen activities during processing
processingText - Color of the Text for Processing message
processingImgSrc - processing Img
function initScreenBlur(processingColor,filmColor,processingText,processingImgSrc)

function initScreenBlur(processingColor,filmColor,processingText,processingImgSrc)
{
document.write("");
document.write("");
document.write("");
document.write("");
}

10) Replaces the processing text message and image with the specified content
function replaceProcessingText(replaceText)

function replaceProcessingText(replaceText)
{
document.getElementById('processStatus').style.display = "none";
document.getElementById('result').style.top=document.getElementById('processStatus').style.top;
document.getElementById('result').style.left=document.getElementById('processStatus').style.left;
document.getElementById('result').style.zIndex = 150;

document.getElementById('result').innerHTML=replaceText;
document.getElementById('result').style.display = "";
}

usage
--------
initScreenBlur("red","gray","PROCESSING...","processing1.gif")
function onAjaxResponse(responseText)
{
//add your code here
}

test.jsp
---------
<% Thread.sleep(5000);//Some processing %>

This is the Ajax response